Skip to content

Commit

Permalink
Update website & readme
Browse files Browse the repository at this point in the history
  • Loading branch information
ma1co committed Sep 16, 2017
1 parent 5e5d8b4 commit c0b1339
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 10 deletions.
20 changes: 16 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
# Reverse engineering Sony PlayMemories Camera Apps #
The latest Sony cameras include an Android subsystem used to run apps from the proprietary Sony PlayMemories Camera App Store (PMCA). We reverse engineered the installation process. This allows you to install custom Android apps on your camera.

## How to use it? ###
There are two ways to install apps on your camera. Be sure it is connected over USB and set to MTP or mass storage mode.
## How to use ##
The list of available apps can be found at [sony-pmca.appspot.com](https://sony-pmca.appspot.com/). If you are using Internet Explorer or Safari, apps can be installed directly from your browser. Other browsers and recent camera firmware updates are not compatible with this method anymore. It is recommended to use the native installers (pmca-gui and pmca-console) instead.

**pmca-gui is the recommended way to install apps.** Binaries for Windows and OS X are available in the [release section](https://github.com/ma1co/Sony-PMCA-RE/releases/latest). Download and open the program, connect your camera via USB, go to the *Install* tab, select an app from the list and click *Install*.

The list of compatible cameras can be found [here](https://github.com/ma1co/OpenMemories-Framework/blob/master/docs/Cameras.md).

Further information can be found in the sections below.

### Browser plugin ###
**Go to [sony-pmca.appspot.com](https://sony-pmca.appspot.com/) to try it out!** You can upload your own apps and install them to your camera using the official Sony browser plugin. Since other browser vendors are disabling NPAPI plugins, please try it using **Internet Explorer**.
The browser-based installer can be found at [sony-pmca.appspot.com](https://sony-pmca.appspot.com/). This site uses the official Sony browser plugin to communicate with the camera directly from a browser window. Since other browser vendors are disabling NPAPI plugins, this method only works in Internet Explorer and Safari. Additionally, camera firmware updates released in June 2017 and later explicitly whitelist the URL of the official app store. Updated cameras refuse to install apps from our site. It is thus recommended to use the native installer instead.

Meanwhile, the site is still used to keep track of the installation counters for the apps in the app list.

### Native installer ###
The native installer directly communicates with cameras over USB (MTP and mass storage connections are supported; for OS X see the notes below). All camera firmware versions are supported.

This installer can also be used by developers to install .apk files from their computer.

### Local installer ###
Download the [latest release](https://github.com/ma1co/Sony-PMCA-RE/releases/latest) (Windows or OS X) or clone this repository.

#### Graphical user interface ####
Expand Down
3 changes: 3 additions & 0 deletions config.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
githubClientId = ''
githubClientSecret = ''

githubProjectUser = 'ma1co'
githubProjectRepo = 'Sony-PMCA-RE'

githubAppListUser = 'ma1co'
githubAppListRepo = 'OpenMemories-AppList'

Expand Down
5 changes: 4 additions & 1 deletion main.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,11 @@ def jsonRepr(o):
raise TypeError
self.output('application/json', json.dumps(data, default=jsonRepr))

def template(self, name, data = {}):
def template(self, name, data = None):
"""Renders a jinja2 template"""
if not data:
data = {}
data['projectRepo'] = (config.githubProjectUser, config.githubProjectRepo)
self.response.write(jinjaEnv.get_template(name).render(data))

def output(self, mimeType, data, filename = None):
Expand Down
5 changes: 4 additions & 1 deletion templates/home.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ <h1>Home</h1>
<li><a href="{{ uri_for('apps') }}">Apps</a>: Install an app on your camera</li>
</ul>

<h1>Important Information</h1>
<p>This browser-based installer is deprecated and not compatible with the newest camera firmware updates. It is recommended to use <a href="https://github.com/{{ projectRepo[0] }}/{{ projectRepo[1] }}/releases/latest">pmca-gui</a> instead.</p>

<h1>Caution!</h1>
<p>This is an experiment in a very early stage. All information has been found through reverse engineering. Even though everything worked fine for our developers, it could cause harm to your hardware. If you break your camera, you get to keep both pieces. <strong>We won't take any responsability.</strong></p>
<p>This is an experiment in a very early stage. All information has been found through reverse engineering. Even though everything worked fine for our developers, it could cause harm to your hardware. If you break your camera, you get to keep both pieces. <strong>We won't take any responsibility.</strong></p>
<p>However, we're just interacting with the isolated Android subsystem. Apps you install this way can be uninstalled in the applications manager. In the worst case, a factory reset of the camera clears all data on the Android partitions.</p>
{% endblock %}
2 changes: 1 addition & 1 deletion templates/layout.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
{% block additionalHead %}{% endblock %}
</head>
<body>
<a href="https://github.com/ma1co/Sony-PMCA-RE" class="github"></a>
<a href="https://github.com/{{ projectRepo[0] }}/{{ projectRepo[1] }}" class="github"></a>
<div class="wrapper">
<div class="header">OpenMemories</div>
<div class="nav">
Expand Down
7 changes: 4 additions & 3 deletions templates/plugin/start.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@
{% endblock %}
{% block content %}
<h1>USB Communication</h1>
<p>This page allows you to communicate with your camera through the USB connection of your computer. Make sure you switch your camera to MTP mode, connect it via USB and turn it on.</p>
<p>If you haven't installed the PMCA Downloader plugin, install it <a href="{{ uri_for('installPlugin') }}">here</a>.</p>
<p>If you have problems, please try it again using Internet Explorer.</p>
<p>This page allows you to communicate with your camera through the USB connection of your computer. Make sure the camera is connected.</p>
<p><strong>Compatibility information:</strong> This site is only compatible with Internet Explorer and Safari. The <a href="{{ uri_for('installPlugin') }}">PMCADownloader plugin</a> has to be installed. Camera firmware updates released in June 2017 and later are not compatible.</p>
<p>It is recommended to use <a href="https://github.com/{{ projectRepo[0] }}/{{ projectRepo[1] }}/releases/latest">pmca-gui</a> instead of this browser-based installer.</p>

<h1>Actions</h1>
<button onclick="pmcaDownload('{{ uri_for('taskStart') }}');">Get camera info</button>
{% if app %}
<button onclick="pmcaDownload('{{ uri_for('appTaskStart', appId = app.package) }}');">Install {{ app.name }}</button>
Expand Down

0 comments on commit c0b1339

Please sign in to comment.