Como se conectar a uma câmera Sony via Wi-Fi do Linux

7

As câmeras Sony vêm com conectividade Wifi, mas seu software é distribuído apenas para Mac e Windows. (www.sony.net/pm /)

Como posso me conectar a ele do Linux? (Especificamente, o Fedora 22 < - > DSC-HX60)

Quando eu habilito o Wifi push, a câmera informa que preciso primeiro adicionar as informações do dispositivo via USB. Isso parece ser possível somente com o software PlayMemories mencionado acima.

Alguém descobriu como fazer o mesmo no Linux?

Ironicamente, parece que a própria câmera roda no BusyBox: / link

p.s. Prefiro não usar o Wine ou uma VM para executar o software do Windows.

    
por cyrrill 22.09.2015 / 17:20

2 respostas

2

Você pode querer dar uma olhada no projeto Alternative de Playmemories . Um excelente desenvolvedor fez engenharia reversa nas partes proprietárias do protocolo PTP / IP modificado da Sony, e conseguiu fazê-lo funcionar com uma combinação de um script Python personalizado & 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.

Eu mesmo não testei, mas parece @ O falk0069 fez o trabalho do yeoman, proporcionando um ponto de partida para conectar-se a câmeras habilitadas para wifi da Sony.

    
por 16.09.2017 / 12:44
0

O seguinte é válido para a Sony A7, acredito que seja semelhante para outras câmeras da Sony, mas não conheça a DSC-HX60.

A câmera possui 2 modos de conexão Wifi:  (a) Modo AP ("Conectar ao smartphone"), onde a câmera atua como um AP ao qual você pode se conectar. Apenas dá acesso a JPGs, não a raws. A API é proprietária, mas pública ( link )  (b) Modo de infra-estrutura ("Conectar ao computador"), onde a câmera se conecta a um ponto de acesso e envia todos os arquivos para um computador na rede local. Usa algum sabor MTP (baseado em PTP / IP).

Eu assumo que você quer dizer (b). Você pode tentar o gphoto2, que deve ser capaz de se conectar usando o PTP (no entanto, nos 5 minutos que eu tentei não consegui fazê-lo funcionar). Se você definir Linux amplamente para incluir o Android, então você pode usar raw2dng para copiar arquivos raw para o seu telefone / tablet - ele usa sua própria pilha PTP / IP (disclaimer: Eu sou o autor).

No entanto, para (b), não importa o quê, você terá primeiro que "emparelhar" a câmera com o computador usando USB. É um protocolo proprietário que só é implementado nos programas Win / Mac da Sony. Tudo o que faz é dizer à câmera para salvar o endereço MAC do computador. Em conexões futuras, o host envia seu endereço MAC como parte da solicitação de conexão inicial (não precisa vir da interface de rede real).

raw2dng pode pegar o endereço MAC "emparelhado" como entrada, gphoto2 talvez também (não tenho certeza - se você quiser tentar, é o UID de 16 bytes: 8 * 0x00 + 2 * 0xFF + MAC). Então, potencialmente você pode emparelhar a câmera com outro computador Win / Mac a que você possa ter acesso e, em seguida, usar o endereço MAC desse computador para se conectar a partir de sua caixa do Linux ... (não testado)

    
por 23.09.2015 / 00:03