9

Sony cameras come with Wifi connectivity, but their software is only distributed for Mac and Windows. (www.sony.net/pm/)

How can I connect to it from Linux? (Specifically, Fedora 22 <--> DSC-HX60)

When I enable the Wifi push, the camera tells me I need to first add the device information via USB. This seems to only be possible with PlayMemories software mentioned above.

Has anyone figured out how to do the same in Linux?

Ironically, it seems the camera itself runs on BusyBox :/ http://oss.sony.net/Products/Linux/DI/DSC-HX60V.html

p.s. I'd rather not use Wine, or a VM in order to run Windows software.

3

You might want to check out this Playmemories Alternative project. One outstanding developer has reverse-engineered the proprietary parts of Sony's modified PTP/IP protocol, and managed to get it working with a combination of a custom Python script & GPhoto2.

The way Sony transfers pictures is via PTP/IP (Picture Transfer Protocol over Internet Protocol). The moment you enable the 'Send to Computer' option from the Camera it starts broadcasting UPNP UDP packets across the network to multicast address (239.255.255.250:1900). This is also known as Simple Service Discovery Protocol (SSDP). At the same time the camera starts up A PTP/IP server on port 15740. The UPNP packets contain all the connection details. The Playmemories app (or sony-pm-alt.py) see these packets and then turn around an hit the PTP/IP servers and transfer the pictures.

Sony requires some non-standard packets to display the 'Sending...' on the camera. This also goes for the automatic shut down feature when done. Without this you have about 2 minutes to transfer the picture before the camera stops and you have no confirmation that it worked. Also, the camera will remain on so you can't walk away or else your battery will continue to drain. I was hoping there would be one magic packet to turn these options on, but this doesn't seem to be the case. Doing a series of tcpdumps I was able to determine what packets make it work. I started off with over a 100 packets being needed and have finally narrowed it down to 23 packets (update: 4 packets to start and 3 packets to end). I was also hoping I could send these packets directly from python using a different tcp session than gphoto, but no luck. So, I ended up really hacking up the libgphoto code to make this work. The developer of libgphoto was then kind enough to work with me and incorporate changes to make things work without the hacking.

I haven't tested it myself, but it looks like @falk0069 has done yeoman's work providing a starting point for connecting to Sony wifi-enabled cameras.

0

The following holds for the Sony A7, I'm guessing it's similar for other Sony cameras but don't know the DSC-HX60.

The camera has 2 Wifi-connection modes: (a) AP-mode ("Connect to smartphone"), where the camera acts as an AP you can connect to. Only gives access to JPGs, not raws. API is proprietary but public (https://developer.sony.com/develop/cameras/) (b) Infrastructure mode ("Connect to computer"), where the camera connects to an AP and pushes any files to a computer on the local network. Uses some MTP-flavour (based on PTP/IP).

I assume you mean (b). You can try gphoto2, which should be able to connect using PTP (however, in the 5 minutes I tried I couldn't get it to work). If you define Linux broadly to include Android, then you can use raw2dng to copy raw files to your phone/tablet - it uses its own PTP/IP stack (disclaimer: I'm the author).

However, for (b), no matter what, you will have to first "pair" the camera to your computer using USB. It's a proprietary protocol that's only implemented in Sony's Win/Mac programs. All it does is to tell the camera to save the MAC-address of the computer. In future connections, the host sends its MAC-address as part of the initial connection request (doesn't need to come from the actual network interface).

raw2dng can take the "paired" MAC-address as an input, gphoto2 maybe as well (not sure - if you want to try, it's the 16 byte UID: 8 * 0x00 + 2 * 0xFF + MAC). So potentially you could pair the camera to another Win/Mac computer you might have access to and then use that computer's MAC address to connect from your Linux box... (untested)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.