sabato 9 giugno 2018

EACHINE R051

Mi e' stato dato il ricevitore EACHINE R051 (utlizzato per le camere FPV a 5 GHz dei droni) per vedere se riuscivo a creare una applicazione Android alternativa a quella originale della ditta....e sono iniziati i problemi


Il dispositivo si dichiara come segue su Linux

--------------------------------------------------
Jun  7 15:47:31 localhost kernel: usb 3-1: new high-speed USB device number 39 using xhci_hcd
Jun  7 15:47:31 localhost kernel: usb 3-1: New USB device found, idVendor=2537, idProduct=1081
Jun  7 15:47:31 localhost kernel: usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jun  7 15:47:31 localhost kernel: usb 3-1: Product: EACHINE
Jun  7 15:47:31 localhost kernel: usb 3-1: SerialNumber: 0123456789ABCDE
Jun  7 15:47:31 localhost kernel: usb-storage 3-1:1.0: USB Mass Storage device detected
Jun  7 15:47:31 localhost kernel: scsi host12: usb-storage 3-1:1.0
Jun  7 15:47:31 localhost mtp-probe: checking bus 3, device 39: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-1"
Jun  7 15:47:31 localhost mtp-probe: bus: 3, device: 39 was not an MTP device
Jun  7 15:47:32 localhost kernel: usb 3-1: USB disconnect, device number 39
Jun  7 15:47:36 localhost kernel: usb 3-1: new high-speed USB device number 40 using xhci_hcd
Jun  7 15:47:36 localhost kernel: usb 3-1: New USB device found, idVendor=2537, idProduct=1081
Jun  7 15:47:36 localhost kernel: usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jun  7 15:47:36 localhost kernel: usb 3-1: Product: EACHINE
Jun  7 15:47:36 localhost kernel: usb 3-1: SerialNumber: 0123456789ABCDE
Jun  7 15:47:36 localhost kernel: usb-storage 3-1:1.0: USB Mass Storage device detected
Jun  7 15:47:36 localhost kernel: scsi host13: usb-storage 3-1:1.0
Jun  7 15:47:36 localhost mtp-probe: checking bus 3, device 40: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-1"
Jun  7 15:47:36 localhost mtp-probe: bus: 3, device: 40 was not an MTP device
Jun  7 15:47:37 localhost kernel: scsi 13:0:0:0: Direct-Access     JKH Tech Fly Video             PQ: 0 ANSI: 6
Jun  7 15:47:37 localhost kernel: sd 13:0:0:0: [sdb] 2 512-byte logical blocks: (1.02 kB/1.00 KiB)
Jun  7 15:47:37 localhost kernel: sd 13:0:0:0: Attached scsi generic sg1 type 0
Jun  7 15:47:37 localhost kernel: sd 13:0:0:0: [sdb] Write Protect is on
Jun  7 15:47:37 localhost kernel: sd 13:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
Jun  7 15:47:37 localhost kernel: Dev sdb: unable to read RDB block 2
Jun  7 15:47:37 localhost kernel: sdb: unable to read partition table
Jun  7 15:47:37 localhost kernel: sdb: partition table beyond EOD, enabling native capacity
Jun  7 15:47:37 localhost kernel: Dev sdb: unable to read RDB block 2
Jun  7 15:47:37 localhost kernel: sdb: unable to read partition table
Jun  7 15:47:37 localhost kernel: sdb: partition table beyond EOD, truncated
Jun  7 15:47:37 localhost kernel: sd 13:0:0:0: [sdb] Attached SCSI removable disk
--------------------------------------------------

Come si vede c'e' una memoria interna (che pero' non sono mai riuscito a montare su Linux perche' il filesystem risultava sempre corrotto) mentre per la sigla  JKH Tech Fly Video non si trovano informazioni.
La cosa da notare e' che su Linux non viene montata una /dev/video* e la camera non e' vista ne' su Windows 10 ne' su Mac....eppure il prodotto viene venduto come UVC (Universal Video Camera) USB Video Class

Non era possibile trovare l'R051 nemmeno in /dev/input/by-path

Montando WireShark per sniffare il traffico USB non ha dato informazioni perche' una volta connessa
la ricevente non era presente nessuno stream (di nessun tipo) sui canali USB

Il preda allo scoraggiamento ho decompilato la applicazione.



All'interno e' presente la libVLC per Android e ci sono chiare chiamate ad stream video conosciuti...quindi non si tratta di un formato video proprietario e ci sono a chiamate ad UVC quindi i dati tecnici sembrano corretti. Ci sono inoltre funzioni che gestiscono l'enumerazione di dispositivi USB e controlli apparentemente su firmware, serial number

Mi viene da pensare che lo stream video non si attivi quando si connette il dispositivo ma solo con un comando software ...questo giustificherebbe perche' non viene montato /dev/video (nel codice puo' essere interessante la funzione UsbConnection

Frugando nella cartella lib, oltre al gia' citato VLC, si trova libns1081-lib che e' relativa al firmware di un controller USB 3.0 Norelsys NS1081. Quindi l'interfaccia con la USB non sembra standard

Una particolarita che ho scoperto dopo un bel po' di prove: il cavo USB non ha la corrente necessaria per tenere acceso il dispositivo. L'EACHINE sembra avere una batteria tampone interna che si ricarica (fino a quando il led rosso smette di pulsare). Se a batteria scarica si connette il dispositivo e si cerca di usarlo nel giro di pochi secondi si spenge. Mi sa che questo aspetto possa essere dovuto al fatto che il dispositivo e' internamente USB 3.0 mentre io lo ho attaccato sempre ad USB 2.0 (quindi a porte di potenza piu' bassa)