Hallo Liste, ich bastel' mir hier gerade was zusammen, aber ich frage mich, ob das nicht einfach(er) geht, bzw. ob ich da auf einem sinnvollen Weg bin. Habe ein Squeeze amd64 System und einen Kindle Aktuell habe ich folgendes Problem: Wenn ich den Kindle einstöpsel, bekomme ich Ihn in "dmesg" angezeigt und kann ihn auch manuell mounten (mount /dev/sdc1 /media/mountpoint), aber die KDE-Geräteüberwachung zeigt Ihn nicht an. - Nicht mal gemounted. Muss ich das verstehen? # dmesg [436538.468308] usb 1-6.4: new high speed USB device using ehci_hcd and address 16 [436538.573070] usb 1-6.4: New USB device found, idVendor=1949, idProduct=0004 [436538.573075] usb 1-6.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [436538.573078] usb 1-6.4: Product: Amazon Kindle [436538.573080] usb 1-6.4: Manufacturer: Amazon [436538.573083] usb 1-6.4: SerialNumber: B023170124370622 [436538.573203] usb 1-6.4: configuration #1 chosen from 1 choice [436538.582420] scsi11 : SCSI emulation for USB Mass Storage devices [436538.582507] usb-storage: device found at 16 [436538.582510] usb-storage: waiting for device to settle before scanning [436543.581720] usb-storage: device scan complete [436543.582894] scsi 11:0:0:0: Direct-Access Kindle Internal Storage 0100 PQ: 0 ANSI: 2 [436543.583437] sd 11:0:0:0: Attached scsi generic sg4 type 0 [436543.588881] sd 11:0:0:0: [sdc] 2846720 512-byte logical blocks: (1.45 GB/1.35 GiB) [436543.696162] sd 11:0:0:0: [sdc] Write Protect is off [436543.696167] sd 11:0:0:0: [sdc] Mode Sense: 0f 00 00 00 [436543.696170] sd 11:0:0:0: [sdc] Assuming drive cache: write through [436543.805933] sd 11:0:0:0: [sdc] Assuming drive cache: write through [436543.805940] sdc: sdc1 [436543.926076] sd 11:0:0:0: [sdc] Assuming drive cache: write through [436543.926081] sd 11:0:0:0: [sdc] Attached SCSI removable disk # lsusb [snip] Bus 001 Device 016: ID 1949:0004 Lab126 Amazon Kindle 3 [snip] Meine Idee war, aus der KDE-Geräteüberwachung heraus eine Regel zu bauen, aber da der Kindle dort "unsichtbar" ist, geht das kaum. Denn sonstige USB-Medien bekomme ich dort zuverlässig angeboten. Na egal, dann mach ich es eben mit UDEV. Ist sowieso deutlich flexibler, dann kann ich automatisch [u]mounten und alle möglichen Scripte aufrufen. Erste Ideen dazu fand ich hier [1]. Habe also mal eine einfache Regel zum Test angelegt (Verbesserungs- bzw. Verfeinerungsvorschläge willkommen) ... # cat /lib/udev/rules.d/81-kindle-sync.rules KERNEL=="sd?", ATTRS{vendor}=="Kindle ", ATTRS{modalias}=="scsi:t-0×00", RUN+="/home/hegi/bin/kindlesync.sh" ... und "service udev restart" gesagt. Kindle eingestöpselt und nix passiert, dabei sollte das Script laufen (manueller Aufruf geht natürlich): $ cat /home/hegi/bin/kindlesync.sh #!/bin/sh # kindlesync.sh # leg zum Test eine Datei in /tmp an, wenn kindle da ist touch /tmp/kindle-`/bin/date +%M` exit 0 Hmmm, da versagt dann irgendwie meine begrenzte Logik. - Was habe ich falsch gemacht? Links: [1] http://alexsleat.co.uk/2011/01/17/auto-sync-kindle-in-ubuntu/ Gruß Stefan. -- Stefan U. Hegner <stefan@hegner-online.de> * * * D-32584 Löhne --- good ole Germany internet: http://www.hegner-web.de * * * GPG-Key | D9DB 51BD 2DA6 9B3A 41CB F-Print | 0287 05A1 8D11 38BA CE91
On Wed, 2012-11-28 21:11:03 +0100, Stefan U. Hegner <stefan@hegner-online.de> wrote: [...]
[436543.581720] usb-storage: device scan complete [436543.582894] scsi 11:0:0:0: Direct-Access Kindle Internal Storage 0100 PQ: 0 ANSI: 2 [436543.583437] sd 11:0:0:0: Attached scsi generic sg4 type 0 [436543.588881] sd 11:0:0:0: [sdc] 2846720 512-byte logical blocks: (1.45 GB/1.35 GiB) [436543.696162] sd 11:0:0:0: [sdc] Write Protect is off [436543.696167] sd 11:0:0:0: [sdc] Mode Sense: 0f 00 00 00 [436543.696170] sd 11:0:0:0: [sdc] Assuming drive cache: write through [436543.805933] sd 11:0:0:0: [sdc] Assuming drive cache: write through [436543.805940] sdc: sdc1 [436543.926076] sd 11:0:0:0: [sdc] Assuming drive cache: write through [436543.926081] sd 11:0:0:0: [sdc] Attached SCSI removable disk
# lsusb [snip] Bus 001 Device 016: ID 1949:0004 Lab126 Amazon Kindle 3 [snip]
[...]
Habe also mal eine einfache Regel zum Test angelegt (Verbesserungs- bzw. Verfeinerungsvorschläge willkommen) ...
# cat /lib/udev/rules.d/81-kindle-sync.rules
KERNEL=="sd?", ATTRS{vendor}=="Kindle ", ATTRS{modalias}=="scsi:t-0×00", RUN+="/home/hegi/bin/kindlesync.sh"
Das ist aber schon alles in einer Zeile, oder?
... und "service udev restart" gesagt. Kindle eingestöpselt und nix passiert, dabei sollte das Script laufen (manueller Aufruf geht natürlich):
$ cat /home/hegi/bin/kindlesync.sh
#!/bin/sh # kindlesync.sh
# leg zum Test eine Datei in /tmp an, wenn kindle da ist touch /tmp/kindle-`/bin/date +%M` exit 0
Hmmm, da versagt dann irgendwie meine begrenzte Logik. - Was habe ich falsch gemacht?
'nen Kindle hab' ich nicht, daher nichts Abmausbares, sondern nur etliche Tips: * Was Du schonmal richtig gemacht hast, ist, daß die Datei auf ".rules" endet. Ohne die Endung geht nichts! * Etwas komisch kommt mir vor, daß Du nur ATTRS (Plural) und kein ATTR nutzt. ATTR-Matches beziehen sich auf die eigentliche Udev-Device-Instanz, während sich alles Plural-Formen auf ein beliebiges (aber immer dasselbe!) Eltern-Device beziehen. Soll die Regel schon laufen, wenn /dev/sdX gemeldet wird? Oder eigentlich erst, wenn /dev/sdX1 (also die Partition) verfügbar ist? Ich hätte letzteres erwartet. Wie auch immer: Um mal an exakte Daten zu kommen, führ' doch mal udevadm info -a -p $(udevadm info -q path -n /dev/sdc1) aus. Dabei darauf achten, daß die Kindle-Partition derzeit /dev/sdc1 ist, ansonsten entsprechend anpassen. MfG, JBG -- Jan-Benedict Glaw jbglaw@lug-owl.de +49-172-7608481 Signature of: 23:53 <@jbglaw> So, ich kletter' jetzt mal ins Bett. the second : 23:57 <@jever2> .oO( kletter ..., hat er noch Gitter vorm Bett, wie früher meine Kinder?) 00:00 <@jbglaw> jever2: *patsch* 00:01 <@jever2> *aua*, wofür, Gedanken sind frei! 00:02 <@jbglaw> Nee, freie Gedanken, die sind seit 1984 doch aus! 00:03 <@jever2> 1984? ich bin erst seit 1985 verheiratet!
Moinsen JBG, ... lange nicht mir Dir gemailt :). Am 28.11.2012 23:33, schrieb Jan-Benedict Glaw:
On Wed, 2012-11-28 21:11:03 +0100, Stefan U. Hegner <stefan@hegner-online.de> wrote:
Habe also mal eine einfache Regel zum Test angelegt (Verbesserungs- bzw. Verfeinerungsvorschläge willkommen) ...
# cat /lib/udev/rules.d/81-kindle-sync.rules
KERNEL=="sd?", ATTRS{vendor}=="Kindle ", ATTRS{modalias}=="scsi:t-0×00", RUN+="/home/hegi/bin/kindlesync.sh" Das ist aber schon alles in einer Zeile, oder?
Ja, ist es.
'nen Kindle hab' ich nicht, daher nichts Abmausbares, sondern nur etliche Tips:
* Was Du schonmal richtig gemacht hast, ist, daß die Datei auf ".rules" endet. Ohne die Endung geht nichts! Das ist doch schon mal erfreulich. * Etwas komisch kommt mir vor, daß Du nur ATTRS (Plural) und kein ATTR nutzt. ATTR-Matches beziehen sich auf die eigentliche Udev-Device-Instanz, während sich alles Plural-Formen auf ein beliebiges (aber immer dasselbe!) Eltern-Device beziehen. OK. Ick sprecke nur broken udev. ;-). - Hatte die rules nur abgeschrieben (siehe [1]). Aber wenn ich mir den udevadm output angucke, steht das da auch so:
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-6/1-6.4/1-6$ [snip] ATTRS{vendor}=="Kindle " [snip] ATTRS{modalias}=="scsi:t-0x00" [snip]
Soll die Regel schon laufen, wenn /dev/sdX gemeldet wird? Oder eigentlich erst, wenn /dev/sdX1 (also die Partition) verfügbar ist? Ich hätte letzteres erwartet. OK, aber was würdest Du dann in die rule schreiben? KERNEL=="sd??"?
looking at device '/devices/pci0000:00/0000:00:1d.7/usb1/1-6/1-6.4/1-6.4:1.0/$ KERNEL=="sdc1" SUBSYSTEM=="block" DRIVER=="" ATTR{partition}=="1" ATTR{start}=="16" ATTR{size}=="2846704" ATTR{alignment_offset}=="0" ATTR{stat}==" 0 0 0 0 0 0 0$ ATTR{inflight}==" 0 0" looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-6/1-6.4/1-6$ KERNELS=="sdc" SUBSYSTEMS=="block" DRIVERS=="" ATTRS{range}=="16" ATTRS{ext_range}=="256" ATTRS{removable}=="1" ATTRS{ro}=="0" ATTRS{size}=="2846720" ATTRS{alignment_offset}=="0" ATTRS{capability}=="53" ATTRS{stat}==" 1 0 8 0 0 0 $ ATTRS{inflight}==" 0 0"
Wie auch immer: Um mal an exakte Daten zu kommen, führ' doch mal
udevadm info -a -p $(udevadm info -q path -n /dev/sdc1)
aus. Habe ich mal angehängt, wobei ich die Seriennummer des Geräts unkenntlich gemacht habe.
Auf Basis von welchen Attributen würdest Du den die udev-rule bauen? Ich würde ja gerne auf die Seriennummer gehen, aber das soll wohl Probleme machen: While this many look daunting, what you want to do if find some attributes from the output which mean only your Kindle will be found when looking for them all, the problem I have found is that, with udev rules you cannot go too far down in the parent tree which stops me being able to use the Kindles serial to identify it. This could mean that my computer will sync any kindle that’s plugged into it Also, wenn Du eine gute Idee hast, her damit! Links: [1] http://alexsleat.co.uk/2011/01/17/auto-sync-kindle-in-ubuntu/ LG Stefan. -- Stefan U. Hegner <stefan@hegner-online.de> * * * D-32584 Löhne --- good ole Germany internet: http://www.hegner-web.de * * * GPG-Key | D9DB 51BD 2DA6 9B3A 41CB F-Print | 0287 05A1 8D11 38BA CE91
Hallo zusammen, Am 29.11.2012 18:55, schrieb Stefan U. Hegner:
Moinsen JBG,
... lange nicht mir Dir gemailt :).
Am 28.11.2012 23:33, schrieb Jan-Benedict Glaw:
On Wed, 2012-11-28 21:11:03 +0100, Stefan U. Hegner <stefan@hegner-online.de> wrote:
Habe also mal eine einfache Regel zum Test angelegt (Verbesserungs- bzw. Verfeinerungsvorschläge willkommen) ...
# cat /lib/udev/rules.d/81-kindle-sync.rules
KERNEL=="sd?", ATTRS{vendor}=="Kindle ", ATTRS{modalias}=="scsi:t-0×00", RUN+="/home/hegi/bin/kindlesync.sh" Das ist aber schon alles in einer Zeile, oder? Ja, ist es.
fürs Protokoll: ... so funzt es: $ cat /lib/udev/rules.d/81-kindle-sync.rules # # UDEV Rules für Kindle # Serial# B012345678901234 # Devices: /dev/kindle /dev/kindle0 /dev/kindle1 /dev/kindle4; Mount Point /media/kindle # Strartscript: /home/hegi/bin/kindleplugged.sh # KERNEL=="sd*", ATTRS{serial}=="B012345678901234", RUN+="/home/hegi/bin/kindleplugged.sh" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{serial}=="B012345678901234", SYMLINK+="kindle%n" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{serial}=="B012345678901234", RUN+="/bin/mkdir /media/kindle" ACTION=="add", SUBSYSTEMS=="usb", ATTRS{serial}=="B012345678901234", RUN+="/bin/mount -t auto -o rw,umask=003,uid=1000,gid=1000 /dev/kindle1 /media/kindle", OPTIONS="last_rule" ACTION=="remove", SUBSYSTEMS=="usb", ATTRS{serial}=="B012345678901234", RUN+="/bin/umount /media/kindle" ACTION=="remove", SUBSYSTEMS=="usb", ATTRS{serial}=="B012345678901234", RUN+="/bin/rmdir /media/kindle", OPTIONS="last_rule" ... jetzt muss ich nur noch einen Trick finden, meinem laufenden Calibre im schroot chroot zu verraten, wenn zwischenzeitlich der Kindle gestöpselt wurde. Wenn ich ihn vor dem Start von Calibre einstöpsel ist alles gut. Wenn ich ihn auswerfe, bekommt Calibre das auch mit. Nur halt der re-plug geht noch nicht. Gruß Stefan. -- Stefan U. Hegner <stefan@hegner-online.de> * * * D-32584 Löhne --- good ole Germany internet: http://www.hegner-web.de * * * GPG-Key | D9DB 51BD 2DA6 9B3A 41CB F-Print | 0287 05A1 8D11 38BA CE91
Teilnehmer (2)
-
Jan-Benedict Glaw
-
Stefan U. Hegner