Problem: 6-in-1 Flash Device Controller

[tE]bachi

BSD Freak
Salü Miteinander

Habe eine Digital Kamera 'Kodak DC4800' und will Datenaustausch via USB vornehmen.

Code:
[root@lan /usr/home/bachi]# usbdevs -v
[...]
port 1 addr 2: self powered, config 1, [color=red]KODAK DC4800 Zoom Digital Camera(0x0160)[/color], Eastman Kodak Company(0x040a), rev 1.00
[...]

Habe danach gphoto2-2.1.1 mit den Ports installiert.
Code:
[root@lan /usr/home/bachi]# gphoto2 --auto-detect
Modell                         Port
----------------------------------------------------------
Kodak DC4800                   usb:

[root@lan /usr/home/bachi]# gphoto2 --debug --summary
[...]
0.594313 gphoto2-port-usb(1): Looking for USB device (vendor 0x40a, product 0x160)... found.
0.594340 gphoto2-abilities-list.c(2): [color=red]Found 'Kodak DC4800' (0x40a,0x160)[/color]
[...]
3.307416 gphoto2-port-usb(1): Looking for USB device (vendor 0x40a, product 0x160)... found.
3.307447 gphoto2-camera(2): Loading '/usr/local/lib/gphoto2/2.1.1/libgphoto2_ptp.so'...
3.307724 gphoto2-port(2): Opening USB port...
3.307830 gphoto2-port(2): Setting timeout to 8000 millisecond(s)...
3.307875 gphoto2-port(2): Setting settings...
3.307939 gphoto2-port(2): Writing 16=0x10 byte(s) to port...
3.311598 gphoto2-port(3): Hexdump of 16 = 0x10 bytes follows:
0000  10 00 00 00 01 00 02 10-00 00 00 00 01 00 00 00  ................
 
3.311737 context(0): PTP: [color=red]request code 0x1002 sending req error[/color]
[...]

Also habe ich gphoto2 gelassen und habe im Internet einen Card Reader gesucht... und auch gefunden, bestellt und geliefert bekommen:
Lindy 6-in-1 Card Reader (http://www.lindy.com/de/productfolder/03/32893/32893big.jpg)
Habe das Ganze mal in Microsoft Windows XP getestet:
Code:
USB-Massenspeichergerät:
Generic USB Storage-SMC USB Device
Generic USB Storage-CFC USB Device
Generic USB Storage-MMC USB Device
Generic USB Storage-MSC USB Device

Also sollte es auch bei FreeBSD gehen...
Code:
[root@lan /usr/home/bachi]# sysctl hw.usb.debug=1
hw.usb.debug: 0 -> 1

[root@lan /usr/home/bachi]# dmesg
[...]
usbd_new_device bus=0xc21d3000 port=1 depth=1 lowspeed=0
usbd_new_device: adding unit addr=2, rev=110, class=0, subclass=0, protocol=0, maxpacket=16, len=18, ls=0
usbd_new_device: new dev (addr 2), dev=0xc21e0980, parent=0xc21e0b80
usbd_probe_and_attach: trying device specific drivers
usbd_probe_and_attach: [color=red]no device specific driver found[/color]
usbd_probe_and_attach: looping over 1 configurations
usbd_set_config_index: (addr 2) attr=0x80, selfpowered=0, power=100
usbd_set_config_index: set config 1
umass0: Generic  USB Storage Device, rev 1.10/1.00, addr 2, SCSI over Bulk-Only
umass0:0:0:-1: Attached to scbus0 as device 0
da0 at umass-sim0 bus 0 target 0 lun 0
da0: [color=red]<Generic USB Storage-SMC 0207>[/color] Removable Direct Access SCSI-0 device
da0: 650KB/s transfers
da0: Attempt to query device size failed: NOT READY, Medium not present
[...]

Also hat FreeBSD nur das erste Gerät, nämlich das SMC Device, erkannt!

Habe danach mit cvsup die neuesten Sources gezogen (tag=RELENG_4), um allfällige änderungen von USB Devices zu erkennen.
Kompiliert, installiert und rebootet... aber nicht hat sich geändert...

Habe danach mal die usbdevs angeschaut:
Code:
[root@lan /usr/home/bachi]# usbdevs -v
[...]
port 1 addr 2: power 100 mA, config 1, USB Storage Device([color=red]0x3050[/color]), Generic ([color=red]0x0aec[/color]), rev 1.00
[...]

Also habe ich die Vendor- und Product-ID mit denen von /usr/src/sys/dev/usb/usbdevs verglichen, und habe gemerkt, dass die Vendor-ID nicht mit dem Vendor Namen übereinstimmt...
Code:
[root@lan /usr/home/bachi]# grep 0x0aec /usr/src/sys/dev/usb/usbdevs
vendor NEODIO           0x0aec  Neodio

Voller neugier habe ich das Internet nach Neodio abgesucht... und auch etwas gefunden... aber nicht bei FreeBSD, sondern bei NetBSD im CVS (http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/usb/usbdevs):
Code:
[...]
 Revision 1.289 / (download) - annotate - [select for diffs], Fri Jan 10 00:50:00 2003 UTC [color=red](4 months, 2 weeks ago)[/color] by gehenna
Branch: MAIN
Changes since 1.288: +2 -1 lines
Diff to previous 1.288 (colored)

Add NeoDio A 6-in-1 Flash Device Controller with USB Interface.
[...]

Ich habe gemeint, das FreeBSD und NetBSD gemeinsame Pläne über USB besitzten... aber das ich nicht so wie mir scheint!

Hat irgendwer schon mal eine veränderung an einem USB Device Driver gemacht? Wenn ja, bitte Melden!

greets

[tE]bachi
 
Also ich kann meinen digitalen Knipskasten als USB-Storage
Device anmelden und dann einfach mounten und drauf
zugreifen :D

Geht das bei Deiner Kamera denn nicht?

Der eine Rechner von mir hat so ein Multimedia-Dingens als
internes Laufwerk (ist aber auch nur intern über USB
angeschlossen). Das Teil ist echt Klasse: die Installations-CD
versucht auf die Laufwerke zuzugreifen und dann gibt's
erstmal ein Panic.

Ich habe dann leztes Jahr einen sendpr dazu gemacht, aber
der schien mir im Sande verlaufen zu sein.
Ich hol mir bei Gelegenheit mal die neuesten Releases vom
Server und probiere es nochmal.
 
Die Kamera kann ich nicht als Massenspeichergerät laden... die DC4800 muss man über das PTP (Picture Transfer Protocol) rüberziehen...
 
Wow! Ich bin gut! Habs rausgefunden...
Sehen wir mal den Kernel Log an:
Code:
[root@lan /]# dmesg
[...]
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <Generic USB Storage-SMC 0207> Removable Direct Access SCSI-0 device
[...]
Also ist einer von 4 Geräten beim booten schon geladen...
Code:
[root@lan /]# camcontrol devlist
<Generic USB Storage-SMC 0207>     at scbus0 target 0 lun 0 (da0,pass0)
Wenn ich in einem Kabel, 4 Geräte laden muss, kann ich es nur nachladen:
Code:
[root@lan /]# camcontrol rescan 0:0:1
[root@lan /]# camcontrol rescan 0:0:2
[root@lan /]# camcontrol rescan 0:0:3
[root@lan /]# camcontrol devlist
<Generic USB Storage-SMC 0207>     at scbus0 target 0 lun 0 (da0,pass0)
<Generic USB Storage-CFC 0207>     at scbus0 target 0 lun 1 (da1,pass2)
<Generic USB Storage-MMC 0207>     at scbus0 target 0 lun 2 (da2,pass3)
<Generic USB Storage-MSC 0207>     at scbus0 target 0 lun 3 (da3,pass4)

Habe noch ein "Quirks" für Generic USB Storages. Einfach in /usr/src/sys/cam/scsi/scsi_da.c in der Struktur da_quirk_entry eintragen:
Code:
    {
        {T_DIRECT, SIP_MEDIA_REMOVABLE, "Generic", "USB Storage-*","*"},
        /*quirks*/ DA_Q_NO_6_BYTE|DA_Q_NO_SYNC_CACHE
    },

Danach mounten... z.B. eine CF-Card:
Code:
[root@lan /]# mount_msdos /dev/da1s1 /mnt

greets

[tE]bachi
 
Zurück
Oben