• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

DSBMC/DSBMD

cabriofahrer

Well-Known Member
Hallo @marcel,

Du hattest doch an anderer Stelle mal erwähnt, dass dsbmd auch Filmkameras mounten sollte? Ich hatte das im Rahmen der verschiedenen Testversionen auch mal ausprobiert und es ging bei einer Gelegenheit mal tatsächlich, doch mit den neueren Versionen (1.2 und 1.2.2) scheint es plötzlich nicht mehr zu gehen?

Des Weiteren ist mir aufgefallen, dass derartige Kameras üble Totalabstürze hervorrufen können, da fühlt man sich in Zeiten von vor FreeBSD 7.x zurückversetzt, wenn man damals einen USB-Stick entfernte.

Mit HAL habe ich es auch ausprobiert, zwar wird versucht, zu mounten, doch es kommt letztendlich eine Fehlermeldung. Unter Linux funktioniert das Mounten einer derartigen Kamera problemlos. Kann es sein, dass FreeBSD irgendein Problem mit dem automatischen Mounten von externen read-only Dateisystemen hat?
 

Freigeist

Well-Known Member
Das ist aber ein schlechter Weg, denn autofs mountet wie damals amd erst, wenn man auf das Verzeichnis /media zugreift.
Nun, mit dieser Form der "Automagie" könnte ich leben.

Mein Ding ist es nicht wenn ich irgendwas irgendwo reinstecke und irgendwer ruft lauthals: "Hallo, bin bereit zum Austausch von irgendwas"

Naja, die Ansichten über magische Dinge sind eben grundverschieden und es gibt ja wichtigere Dinge im Leben.
 

marcel

Well-Known Member
Themenstarter #353
Hallo, @cabriofahrer!
Du hattest doch an anderer Stelle mal erwähnt, dass dsbmd auch Filmkameras mounten sollte?
Das gilt generell für Geräte, die PTP "sprechen".
Testversionen auch mal ausprobiert und es ging bei einer Gelegenheit mal tatsächlich, doch mit den neueren Versionen (1.2 und 1.2.2) scheint es plötzlich nicht mehr zu gehen?
Es kann auch einfach daran liegen, dass gphotofs daran scheitert, die Kamera einzuhängen. Um das Problem einzugrenzen, kannst Du wie folgt vorgehen:

  1. Stelle sicher, dass die Kamera erkannt wird:
    Code:
    % dsbmc-cli -l
  2. Versuche, die Kamera manuell einzuhängen:
    Code:
    % dsbmc-cli -m /dev/ugenX.Y
    Mit welcher Meldung beklagt sich dsbmc-cli? Wirf anschließend einen Blick in die /var/log/dsbmd.log
    Code:
    % tail -50 /var/log/dsbmd.log
  3. Versuche, die Kamera mit gphotofs einzuhängen:
    Code:
    % mkdir mnt
    % gphotofs --port=usb:00X,00Y mnt
    Gibt es Fehlermeldungen? Sind die Dateien in ./mnt zu finden?
 

cabriofahrer

Well-Known Member
Hallo @marcel,

hier die Meldungen/Angaben. Bei Schritt 3 ist mir leider nicht ganz klar, was ich da eingeben muss anstatt von "usb:00X, 00Y".

Code:
$ dsbmc-cli -l
dev=/dev/pseudo00:volid=.gvfs:fsname=fuse:mntpt=/usr/home/werner/.gvfs:type=hdd
$ dsbmc-cli -m /dev/ugenX.Y
dsbmc-cli: /dev/ugenX.Y: No such file or directory
$ dsbmc-cli -m /dev/ugen1.2
dsbmc-cli: No such device '/dev/ugen1.2'
$ dsbmc-cli -m /dev/da1s1
dsbmc-cli: No such device '/dev/da1s1'
$ dsbmc-cli -m /dev/da1
dsbmc-cli: No such device '/dev/da1'
$ tail -50 /var/log/dsbmd.log
dsbmd: ioctl(/dev/cd0, CDRIOCREADSPEED): Device not configured on Sat Feb 24 11:11:07 2018
dsbmd: ioctl(/dev/cd1, CDRIOCREADSPEED): Device not configured on Sat Feb 24 11:11:07 2018
dsbmd: getfs(): fread(): No error: 0
dsbmd: getfs(): fread(): Input/output error
dsbmd: getfs(): Input/output error
dsbmd: Client with UID 1001 connected on Sat Feb 24 11:11:16 2018
dsbmd: FS == msdosfs
dsbmd: Device /dev/da1s1 mounted on /media/da1s1 by UID 1001 on Sat Feb 24 11:13:17 2018
dsbmd: getfs(): fread(): Invalid argument
dsbmd: getfs(): Invalid argument
dsbmd: getfs(): fread(): Invalid argument
dsbmd: getfs(): Invalid argument
dsbmd: FS == cd9660
dsbmd: Device /dev/cd0 mounted on /media/CHOYJ_29 by UID 1001 on Sat Feb 24 11:13:37 2018
dsbmd: dsbmd exited on Sat Feb 24 11:21:14 2018
dsbmd: dsbmd started on Sat Feb 24 13:52:23 2018
dsbmd: ioctl(/dev/cd0, CDRIOCREADSPEED): Device not configured on Sat Feb 24 13:52:23 2018
dsbmd: ioctl(/dev/cd1, CDRIOCREADSPEED): Device not configured on Sat Feb 24 13:52:23 2018
dsbmd: getfs(): fread(): No error: 0
dsbmd: getfs(): fread(): Input/output error
dsbmd: getfs(): Input/output error
dsbmd: Client with UID 1001 connected on Sat Feb 24 13:52:33 2018
dsbmd: dsbmd exited on Sat Feb 24 16:26:07 2018
dsbmd: dsbmd started on Sat Feb 24 20:01:15 2018
dsbmd: ioctl(/dev/cd0, CDRIOCREADSPEED): Device not configured on Sat Feb 24 20:01:15 2018
dsbmd: ioctl(/dev/cd1, CDRIOCREADSPEED): Device not configured on Sat Feb 24 20:01:15 2018
dsbmd: getfs(): fread(): No error: 0
dsbmd: getfs(): fread(): Input/output error
dsbmd: getfs(): Input/output error
dsbmd: Client with UID 1001 connected on Sat Feb 24 20:01:25 2018
dsbmd: dsbmd exited on Sat Feb 24 20:07:29 2018
dsbmd: dsbmd started on Tue Feb 27 21:53:27 2018
dsbmd: FS == cd9660
dsbmd: ioctl(/dev/cd1, CDRIOCREADSPEED): Device not configured on Tue Feb 27 21:53:30 2018
dsbmd: getfs(): fread(): No error: 0
dsbmd: getfs(): fread(): Input/output error
dsbmd: getfs(): Input/output error
dsbmd: Client with UID 1001 connected on Tue Feb 27 21:54:01 2018
dsbmd: Device /dev/cd0 mounted on /media/Yager by UID 1001 on Tue Feb 27 21:54:01 2018
dsbmd: chown(/dev/pseudo00): No such file or directory on Tue Feb 27 21:54:21 2018
dsbmd: Client with UID 1001 connected on Tue Feb 27 21:57:28 2018
dsbmd: Client with UID 1001 disconnected on Tue Feb 27 21:57:28 2018
dsbmd: Client with UID 1001 connected on Tue Feb 27 22:02:18 2018
dsbmd: Client with UID 1001 disconnected on Tue Feb 27 22:02:18 2018
dsbmd: Client with UID 1001 connected on Tue Feb 27 22:02:27 2018
dsbmd: Client with UID 1001 disconnected on Tue Feb 27 22:02:27 2018
dsbmd: Client with UID 1001 connected on Tue Feb 27 22:03:07 2018
dsbmd: Client with UID 1001 disconnected on Tue Feb 27 22:03:07 2018
dsbmd: Client with UID 1001 connected on Tue Feb 27 22:04:16 2018
dsbmd: Client with UID 1001 disconnected on Tue Feb 27 22:04:16 2018
$
Auszug von dmesg:

Code:
ugen1.2: <Sony Sony Camcorder> at usbus1
umass1 on uhub1
umass1: <Sony Sony Camcorder, class 0/0, rev 2.00/4.01, addr 2> on usbus1
umass1:  8070i (ATAPI) over Bulk-Only; quirks = 0xc100
umass1:5:1: Attached to scbus5
random: harvesting attach, 8 bytes (4 bits) from umass1
(probe0:umass-sim1:1:0:0): Down reving Protocol Version from 2 to 0?
pass5 at umass-sim1 bus 1 scbus5 target 0 lun 0
pass5: <Sony Camcorder 1.00> Removable Direct Access SCSI device
pass5: Serial Number 0886200BE669
pass5: 40.000MB/s transfers
GEOM: new disk da1
da1 at umass-sim1 bus 1 scbus5 target 0 lun 0
da1: <Sony Camcorder 1.00> Removable Direct Access SCSI device
da1: Serial Number 0886200BE669
da1: 40.000MB/s transfers
da1: 28615MB (58605120 512 byte sectors)
da1: quirks=0x2<NO_6_BYTE>
da1: Delete methods: <NONE(*),ZERO>

Die Kamera lässt sich als root mit read-only manuell mounten:

Code:
# mount -t msdos -r /dev/da1s1 /mnt
mount: Using "-t msdosfs", since "-t msdos" is deprecated.
# cd /mnt
# ls
AVF_INFO        DCIM            MODELCFG.IND    MP_ROOT
#
 

marcel

Well-Known Member
Themenstarter #355
Guten Morgen, @cabriofahrer!
hier die Meldungen/Angaben. Bei Schritt 3 ist mir leider nicht ganz klar, was ich da eingeben muss anstatt von "usb:00X, 00Y".
Code:
$ dsbmc-cli -l
dev=/dev/pseudo00:volid=.gvfs:fsname=fuse:mntpt=/usr/home/werner/.gvfs:type=hdd
Hier sieht man nur gvfs. Also wird die Kamera nicht erkannt.
Code:
[...]
umass1: <Sony Sony Camcorder, class 0/0, rev 2.00/4.01, addr 2> on usbus1
umass1:  8070i (ATAPI) over Bulk-Only; quirks = 0xc100
umass1:5:1: Attached to scbus5
random: harvesting attach, 8 bytes (4 bits) from umass1
(probe0:umass-sim1:1:0:0): Down reving Protocol Version from 2 to 0?
[...]
GEOM: new disk da1
Aha, die Kamera zeigt sich als Massenspeicher, nicht als PTP-Gerät. Da es aber nicht in der Ausgabe von dsbmc-cli -l zu sehen ist, wird das Dateisystem wohl nicht erkannt. Du könntest mir mal die ersten vier Sektoren der Partition schicken (mk<dieses A mit dem Kringel>freeshell<Ort ohne räumliche Ausdehnung>de
Code:
# dd if=/dev/da1s1 of=/tmp/camcorder.img count=4
Die Kamera lässt sich als root mit read-only manuell mounten:
Dann kann man das hinkriegen.
 

marcel

Well-Known Member
Themenstarter #358
Also die Dateisystemerkennung ist nicht das Problem. Was bekommst Du denn für eine Ausgabe, wenn du folgendes ausführst?
Code:
% fetch http://freeshell.de/~mk/download/testfs.c
% cc -o testfs testfs.c -lcam
% ./testfs -f /dev/daXs1
(X entsprechend ersetzen.)
 

cabriofahrer

Well-Known Member
Code:
ugen1.2: <Sony Sony Camcorder> at usbus1
umass1 on uhub1
umass1: <Sony Sony Camcorder, class 0/0, rev 2.00/4.01, addr 2> on usbus1
umass1:  8070i (ATAPI) over Bulk-Only; quirks = 0xc100
umass1:5:1: Attached to scbus5
random: harvesting attach, 8 bytes (4 bits) from umass1
(probe0:umass-sim1:1:0:0): Down reving Protocol Version from 2 to 0?
pass5 at umass-sim1 bus 1 scbus5 target 0 lun 0
pass5: <Sony Camcorder 1.00> Removable Direct Access SCSI device
pass5: Serial Number 0886200BE669
pass5: 40.000MB/s transfers
GEOM: new disk da1
da1 at umass-sim1 bus 1 scbus5 target 0 lun 0
da1: <Sony Camcorder 1.00> Removable Direct Access SCSI device
da1: Serial Number 0886200BE669
da1: 40.000MB/s transfers
da1: 28615MB (58605120 512 byte sectors)
da1: quirks=0x2<NO_6_BYTE>
da1: Delete methods: <NONE(*),ZERO>
$ fetch http://freeshell.de/~mk/download/testfs.c
testfs.c                                      100% of 7341  B   30 MBps 00m00s
$ cc -o testfs testfs.c -lcam
$ ./testfs -f /dev/da1s1
275: sector[0x11] == 0
289: Magic value 'RRaA' found
FAT successfully identified
$
 

cabriofahrer

Well-Known Member
Nein, ich bekomme nur:

Code:
$ dsbmc-cli -l
dev=/dev/pseudo00:volid=.gvfs:fsname=fuse:mntpt=/usr/home/werner/.gvfs:type=hdd
$ 
$ pkg info | grep dsbmd
dsbmd-1.2  Media mounting daemon
 

cabriofahrer

Well-Known Member
Nein:

Code:
$ more /etc/fstab
# Device        Mountpoint      FStype  Options Dump    Pass#
/dev/ada0p2     /               ufs     rw      1       1
/dev/ada0p3     none            swap    sw      0       0
/dev/ada1p2     /Disk2          ufs     rw      2       2
#/dev/ada2p1    /Disk3          ufs     rw      2       2
fdesc           /dev/fd         fdescfs rw      0       0
proc            /proc           procfs  rw      0       0
linproc /compat/linux/proc      linprocfs rw    0       0
tmpfs           /tmp            tmpfs rw,mode=777 0     0
#md99   none    swap    sw,file=/usr/swap0,late 0       0
#md99   none    swap    sw,file=/Disk2/swap1,late 0       0
$
Bist Du Dir sicher, dass das nicht etwas mit dem write-protect/read-only zu tun hat? Schließlich kann ich die Kamera nur manuell mounten, wenn ich explizit den Flag "-r" angebe, siehe hier:

Code:
# mount -t msdos /dev/da1s1 /mnt
mount: Using "-t msdosfs", since "-t msdos" is deprecated.
mount_msdosfs: /dev/da1s1: Permission denied
# mount -t msdos -r /dev/da1s1 /mnt
mount: Using "-t msdosfs", since "-t msdos" is deprecated.
#
 

marcel

Well-Known Member
Themenstarter #364
Ok. Dann haben wir die trivialen Fehlerquellen ausgeschlossen.
Bist Du Dir sicher, dass das nicht etwas mit dem write-protect/read-only zu tun hat? Schließlich kann ich die Kamera nur manuell mounten, wenn ich explizit den Flag "-r" angebe, siehe hier:
Mir ist das aufgefallen. Aber dennoch müsste DSBMD das Gerät anzeigen. Im dem Fall, dass ein schreibgeschütztes Speichermedium nicht rw eingehängt werden kann, versucht DSBMD es ro zu mounten. Werde dann morgen mal eine Debug-Version bereitstellen.
 

marcel

Well-Known Member
Themenstarter #365
Hier, wie versprochen, der Debug-Code:
Code:
# fetch https://codeload.github.com/mrclksr/DSBMD/zip/1.2.2-debug
# unzip 1.2.2-debug
# cd DSBMD-1.2.2-debug
# make
# service dsbmd stop
# sh -c './dsbmd -f > dsbmd.log 2>&1'
Jetzt den Camcorder anschließen, und ein paar Sekunden warten. Anschließend den laufenden dsbmd mit Strg+C beenden, und das Log hier posten.
 

marcel

Well-Known Member
Themenstarter #367
Ich habe noch weitere Debug-Meldungen in dem Bereich gesetzt, wo es zu haken scheint. Du kannst alles, so wie in #365 beschrieben, nochmals ausführen.
 

marcel

Well-Known Member
Themenstarter #369
Es scheint daran zu scheitern, dass die Subclass des Geräts in keine der beiden Kategorien passt, in die DSBMD Massenspeichergeräte einordnet. Wie lautet denn die Ausabe von
Code:
% usbconfig dump_curr_config_desc| grep -A3 Mass
wenn die Kamera angeschlossen ist?
 

cabriofahrer

Well-Known Member
Sorry, war einen Tag weg. Aber jetzt:

Code:
$ usbconfig dump_curr_config_desc| grep -A3 Mass
      bInterfaceClass = 0x0008  <Mass storage>
      bInterfaceSubClass = 0x0006
      bInterfaceProtocol = 0x0050
      iInterface = 0x0000  <no string>
Ich hoffe, das hilft jetzt weiter.
 

marcel

Well-Known Member
Themenstarter #373
Danke. Ich bin etwas verwirrt darüber, dass usbconfig die Subclass 0x6 anzeigt, womit DSBMD glücklich wäre, aber es ist laut Log 0x5. Wie es aussieht, ist die Subclass 0x5 (SFF-8070i) obsolet, und wird wahrscheinlich deswegen einfach als 0x6 gehandhabt. Ich werde es dem gleich tun.
 

marcel

Well-Known Member
Themenstarter #374
Das sollte es tun:
Code:
# fetch http://freeshell.de/~mk/download/dsbmd-1.3rc.tgz
# tar xf dsbmd-1.3rc.tgz && cd dsbmd-1.3rc && make install
# service dsbmd restart
 

cabriofahrer

Well-Known Member
Wow, vielen Dank, klappt jetzt einwandfrei!

Allerdings bekomme ich nach dieser Prozedur dennoch

Code:
# pkg info | grep dsbmd
dsbmd-1.2                      Media mounting daemon
#
angezeigt?

Und könntest Du Deine Ausführungen von #373 bitte noch etwas genauer erläutern? Was sind die Subclasses 0x5 und 0x6 und warum ist eine davon obsolet?

Und vielleicht hast Du noch eine Erklärung für folgendes Problem, was aber nichts mit dsbmd zu tun hat:

Zum Entfernen der Kamera mache ich zuerst ein ordnungsmeäßes Unmounten. In diesem Fall konnte das jetzt über Thunar geschehen. Dann befolge ich die Meldungen des Displays der Kamera, dass man die Verbindung zum PC beenden soll. Doch manchmal bekomme ich beim Ziehen des Kables einen Totalabsturz, das System macht einfach einen kalten Neustart und es meldet, dass die Festplatte nicht ordnungsgemäß geunmountet wurde und beginnt entsprechend ein fsck.
Das scheint sicherlich ein Problem speziell von FreeBSD zu sein, oder?