Skocz do zawartości

Dostęp Do Aparatu Foto


jjj

Rekomendowane odpowiedzi

Witam,

podłączam aparat fotograficzny (Canon) do portu USB i wtedy

$ tail /var/log/messages
Jul 10 21:34:28 localhost kernel: hub 1-0:1.0: unable to enumerate USB device on port 3
Jul 10 21:34:28 localhost kernel: usb 3-1: new full speed USB device using uhci_hcd and address 6
Jul 10 21:34:28 localhost kernel: usb 3-1: configuration #1 chosen from 1 choice
Jul 10 21:34:28 localhost kernel: usb 3-1: New USB device found, idVendor=04a9, idProduct=30c1
Jul 10 21:34:28 localhost kernel: usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Jul 10 21:34:28 localhost kernel: usb 3-1: Product: Canon Digital Camera
Jul 10 21:34:28 localhost kernel: usb 3-1: Manufacturer: Canon Inc.
Jul 10 21:34:34 localhost kernel: usb 3-1: reset full speed USB device using uhci_hcd and address 6

Jeżeli desktop jest odpowiednio skonfigurowany, np KDE z wodotryskami, to za chwilę

 $ ps -u ja
2407 ?        00:00:00 kio_kamera
2408 ?        00:00:00 kio_system
2409 ?        00:00:00 kio_media
2410 ?        00:00:00 kio_kamera
2421 ?        00:00:00 knotify

i wtedy mogę sobie obejrzeć lub grać zdjęcia. Jakoś mi to nie wystarcza. Mam więc co najmniej dwa pytania:

1. gdzie jest system plików, który KDE nazywa system:/media/camera -- bo nie ma go ani w fstab, ani w mtab, ani aparat nie ma dev/sd* przydzielonego,

2. czy można (i jak) tak skonfigurować środowisko, żeby widzieć aparat jako montowalne urządzenie z systemem plików, np. /dev/sdc, bez względu na ,,siłę'' aktualnie używanego desktopu.

Odnośnik do komentarza
Udostępnij na innych stronach

1. gdzie jest system plików, który KDE nazywa system:/media/camera -- bo nie ma go ani w fstab, ani w mtab, ani aparat nie ma dev/sd* przydzielonego
Głowy nie dam, ale czy przypadkiem udev nie ma z tym coś wspólnego? "man udev" i są podane ścieżki do różnych katalogów - /dev/mapper i /etc/udev wyglądają obiecująco.

Zaciekawiłeś mnie, bo mnie wygodniej zawsze było wyjąć kartę z aparatu i wetknąć do czytnika. Będę musiał sprawdzić jak to wygląda, gdy przypnę bezpośrednio moją armatę ;)

Odnośnik do komentarza
Udostępnij na innych stronach

W tym przypadku chodzi o daemona HAL, który otrzymuje informacje o nowym sprzęcie od hald-addon-storage - usługa ta jest niezależna od środowiska graficznego (system-config-services), więc nie wiem skąd u Ciebie różnica w zachowaniu systemu. Udział powinien nazywać się sdbX w /dev.

Odnośnik do komentarza
Udostępnij na innych stronach

1. gdzie jest system plików, który KDE nazywa system:/media/camera -- bo nie ma go ani w fstab, ani w mtab, ani aparat nie ma dev/sd* przydzielonego,

Sam sobie odpowiedziałeś na pytanie: /media/camera (a przynajmniej tam powinno to być)

2. czy można (i jak) tak skonfigurować środowisko, żeby widzieć aparat jako montowalne urządzenie z systemem plików, np. /dev/sdc, bez względu na ,,siłę'' aktualnie używanego desktopu.

W czym problem ręcznie zamontować gdzie się chce ?

 

WalDo: raczej hal ma z tym więcej wspólnego imo, można też poszukać więcej o nowym device notifierze z kde4

 

Chyba że mowa o kde 3.5 to nie pamiętam.

 

edit: widzę Sorror mnie uprzedził kiedy pisałem posta :)

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za odpowiedzi. Ale nie jest aż tak prosto.

 

@WalDo -- ja też dotychczas wkładałem kartę SD do czytnika. Zwłaszcza że obsługa aparatu w FC6 była lekko mówiąc średnia. Dopiero w ostatnim roku stała się akceptowalna.

 

@Adi1981: /media/camera -- zdecydowanie NIE. system:/media/camera != file:///media/camera. W system:/media są raczej wylistowane etykiety woluminów, ale nie wszystkich z fstab i nie tylko z fstab. Czym jest ten drugi, każdy widzi. Ale ja nie mam kartoteki /media/camera, nawet podczas przeglądania zawartości aparatu.

Hm... kde 3.5.9 na F8. Z KDE 4 się wstrzymuję co najmniej do 4.1.

 

@Sorror -- HAL powinien maczać w tym paluchy. Jednak w /dev nie pojawia mi się nic nowego. W przypadku woluminów usb i kart SD -- i owszem, jest tak jak mówisz.

Odnośnik do komentarza
Udostępnij na innych stronach

Jul 10 21:34:28 localhost kernel: usb 3-1: new full speed USB device using uhci_hcd and address 6

 

HAL zdecydowanie działa, natomiast później dzieją się u Ciebie dziwne rzeczy ;) Nie wiem czy wkleiłeś całość loga z /var/log/messages - nie odzywa się w ogóle scsi2. Inna sprawa, że w moim przypadku to mój Olympus inicjalizuje połączenie i dopiero wtedy dostaję info z kernela, że pojawił się nowy sprzęt. Być może zależy to więc od używanego modelu.

Odnośnik do komentarza
Udostępnij na innych stronach

Najważniejsze jest to:

 

Jul 10 21:34:34 localhost kernel: usb 3-1: reset full speed USB device using uhci_hcd and address 6

 

Dokładnie takie resety miałem jak podpinałem trefny dysk. Żeby dowiedzieć się więcej co się dzieje, odpal sobie udevmonitor i podglądaj. Możesz spróbować też na innym porcie (może kompie?) ale jak dla mnie to coś ze sprzętem. Może karta jest wyjechana?

 

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Hm... kde 3.5.9 na F8. Z KDE 4 się wstrzymuję co najmniej do 4.1.

 

A no to może to dlatego. W kde4 po kliknięciu w device managerze na urządzenie montuje się ono w /media/_nazwa_urządzenia. Co prawda przyznam się bez bicia że nie sprawdzałem akurat z samym aparatem (zrobię to troszkę później), ale wydaje mi się że będzie tak samo i z nim.

Odnośnik do komentarza
Udostępnij na innych stronach

Ta konkretna karta zawsze wydawała mi się trochę dziwna. Inne wyjechały na wakacje, więc na razie nie porównam. Ale kiedy ją wkładam do czytnika, udev robi grzecznie /dev/sdd i /dev/sdd1. Zaś z aparatu -- tylko /dev/usbdevX.X_epXX.

Odnośnik do komentarza
Udostępnij na innych stronach

To może spróbuj napisać regułkę specjalnie dla aparatu?

Oj, chyba będzie trzeba...

W dokumentacji jest przykład dla aparatu, ale dotyczy przypadku, kiedy urządzenie przedstawia się jako dysk scsi. Wtedy udev i tak tworzy dla niego urządzenie blokowe, a to załatwia sprawę. Mój aparat jest obsługiwany przez subsystem usb, i jest rozpoznany jako skaner poprzez wpis do /etc/udev/60-libsane.rules.

Drobne grzebanie w konfiguracji, ew. stworzenie własnego pliku reguł dla konkretnego modelu urządzenia pozwala mi uzyskać symlink do /dev/bus/usb/0XX/0XX, ale nie załatwia utworzenia urządzenia blokowego.

 

Załączam log z udevinfo (inny aparat niż pierwotnie, bo tamten wyjechał, ale oba zachowują się podobnie)

# udevinfo -a -p $(udevinfo -q path -n /dev/camera-3-1)

Udevinfo starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

 looking at device '/devices/pci0000:00/0000:00:1d.1/usb3/3-1':
   KERNEL=="3-1"
   SUBSYSTEM=="usb"
   DRIVER=="usb"
   ATTR{dev}=="189:262"
   ATTR{configuration}==""
   ATTR{bNumInterfaces}==" 1"
   ATTR{bConfigurationValue}=="1"
   ATTR{bmAttributes}=="c0"
   ATTR{bMaxPower}=="  0mA"
   ATTR{urbnum}=="13"
   ATTR{idVendor}=="03f0"
   ATTR{idProduct}=="9a02"
   ATTR{bcdDevice}=="0100"
   ATTR{bDeviceClass}=="00"
   ATTR{bDeviceSubClass}=="00"
   ATTR{bDeviceProtocol}=="00"
   ATTR{bNumConfigurations}=="1"
   ATTR{bMaxPacketSize0}=="16"
   ATTR{speed}=="12"
   ATTR{busnum}=="3"
   ATTR{devnum}=="7"
   ATTR{version}==" 2.00"
   ATTR{maxchild}=="0"
   ATTR{quirks}=="0x0"
   ATTR{authorized}=="1"
   ATTR{manufacturer}=="HP"
   ATTR{product}=="HP Photosmart E330"
   ATTR{serial}=="CN765A108VS"

 looking at parent device '/devices/pci0000:00/0000:00:1d.1/usb3':
   KERNELS=="usb3"
   SUBSYSTEMS=="usb"
   DRIVERS=="usb"
   ATTRS{dev}=="189:256"
   ATTRS{configuration}==""
   ATTRS{bNumInterfaces}==" 1"
   ATTRS{bConfigurationValue}=="1"
   ATTRS{bmAttributes}=="e0"
   ATTRS{bMaxPower}=="  0mA"
   ATTRS{urbnum}=="157"
   ATTRS{idVendor}=="1d6b"
   ATTRS{idProduct}=="0001"
   ATTRS{bcdDevice}=="0206"
   ATTRS{bDeviceClass}=="09"
   ATTRS{bDeviceSubClass}=="00"
   ATTRS{bDeviceProtocol}=="00"
   ATTRS{bNumConfigurations}=="1"
   ATTRS{bMaxPacketSize0}=="64"
   ATTRS{speed}=="12"
   ATTRS{busnum}=="3"
   ATTRS{devnum}=="1"
   ATTRS{version}==" 1.10"
   ATTRS{maxchild}=="2"
   ATTRS{quirks}=="0x0"
   ATTRS{authorized}=="1"
   ATTRS{manufacturer}=="Linux 2.6.25.10-47.fc8 uhci_hcd"
   ATTRS{product}=="UHCI Host Controller"
   ATTRS{serial}=="0000:00:1d.1"
   ATTRS{authorized_default}=="1"

 looking at parent device '/devices/pci0000:00/0000:00:1d.1':
   KERNELS=="0000:00:1d.1"
   SUBSYSTEMS=="pci"
   DRIVERS=="uhci_hcd"
   ATTRS{vendor}=="0x8086"
   ATTRS{device}=="0x24d4"
   ATTRS{subsystem_vendor}=="0x1043"
   ATTRS{subsystem_device}=="0x80a6"
   ATTRS{class}=="0x0c0300"
   ATTRS{irq}=="19"
   ATTRS{local_cpus}=="ffffffff"
   ATTRS{modalias}=="pci:v00008086d000024D4sv00001043sd000080A6bc0Csc03i00"
   ATTRS{enable}=="1"
   ATTRS{broken_parity_status}=="0"
   ATTRS{msi_bus}==""

 looking at parent device '/devices/pci0000:00':
   KERNELS=="pci0000:00"
   SUBSYSTEMS==""
   DRIVERS==""

Dla porównania analogiczny log dla pen-drive'a

# udevinfo -a -p $(udevinfo -q path -n /dev/sdb1)

Udevinfo starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

 looking at device '/block/sdb/sdb1':
   KERNEL=="sdb1"
   SUBSYSTEM=="block"
   DRIVER==""
   ATTR{dev}=="8:17"
   ATTR{start}=="50"
   ATTR{size}=="255200"
   ATTR{stat}=="      22       24      368       46        0        0        0        0        0       32       46"

 looking at parent device '/block/sdb':
   KERNELS=="sdb"
   SUBSYSTEMS=="block"
   DRIVERS==""
   ATTRS{dev}=="8:16"
   ATTRS{range}=="16"
   ATTRS{removable}=="1"
   ATTRS{size}=="255488"
   ATTRS{capability}=="13"
   ATTRS{stat}=="      26       29      440       54        0        0        0        0        0       39       54"

 looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4:1.0/host6/target6:0:0/6:0:0:0':
   KERNELS=="6:0:0:0"
   SUBSYSTEMS=="scsi"
   DRIVERS=="sd"
   ATTRS{device_blocked}=="0"
   ATTRS{type}=="0"
   ATTRS{scsi_level}=="3"
   ATTRS{vendor}=="Generic "
   ATTRS{model}=="USB Flash Disk  "
   ATTRS{rev}=="2.00"
   ATTRS{state}=="running"
   ATTRS{timeout}=="60"
   ATTRS{iocounterbits}=="32"
   ATTRS{iorequest_cnt}=="0x107"
   ATTRS{iodone_cnt}=="0x107"
   ATTRS{ioerr_cnt}=="0x4"
   ATTRS{modalias}=="scsi:t-0x00"
   ATTRS{evt_media_change}=="0"
   ATTRS{queue_depth}=="1"
   ATTRS{queue_type}=="none"
   ATTRS{max_sectors}=="240"

 looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4:1.0/host6/target6:0:0':
   KERNELS=="target6:0:0"
   SUBSYSTEMS==""
   DRIVERS==""

 looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4:1.0/host6':
   KERNELS=="host6"
   SUBSYSTEMS==""
   DRIVERS==""

 looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4:1.0':
   KERNELS=="1-4:1.0"
   SUBSYSTEMS=="usb"
   DRIVERS=="usb-storage"
   ATTRS{bInterfaceNumber}=="00"
   ATTRS{bAlternateSetting}==" 0"
   ATTRS{bNumEndpoints}=="03"
   ATTRS{bInterfaceClass}=="08"
   ATTRS{bInterfaceSubClass}=="06"
   ATTRS{bInterfaceProtocol}=="50"
   ATTRS{modalias}=="usb:v0EA0p2168d0200dc00dsc00dp00ic08isc06ip50"

 looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-4':
   KERNELS=="1-4"
   SUBSYSTEMS=="usb"
   DRIVERS=="usb"
   ATTRS{dev}=="189:9"
   ATTRS{configuration}==""
   ATTRS{bNumInterfaces}==" 1"
   ATTRS{bConfigurationValue}=="1"
   ATTRS{bmAttributes}=="80"
   ATTRS{bMaxPower}=="200mA"
   ATTRS{urbnum}=="609"
   ATTRS{idVendor}=="0ea0"
   ATTRS{idProduct}=="2168"
   ATTRS{bcdDevice}=="0200"
   ATTRS{bDeviceClass}=="00"
   ATTRS{bDeviceSubClass}=="00"
   ATTRS{bDeviceProtocol}=="00"
   ATTRS{bNumConfigurations}=="1"
   ATTRS{bMaxPacketSize0}=="64"
   ATTRS{speed}=="480"
   ATTRS{busnum}=="1"
   ATTRS{devnum}=="10"
   ATTRS{version}==" 2.00"
   ATTRS{maxchild}=="0"
   ATTRS{quirks}=="0x0"
   ATTRS{authorized}=="1"
   ATTRS{manufacturer}=="USB     "
   ATTRS{product}=="Flash Disk      "
   ATTRS{serial}=="106C1141C901A7A9"

 looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1':
   KERNELS=="usb1"
   SUBSYSTEMS=="usb"
   DRIVERS=="usb"
   ATTRS{dev}=="189:0"
   ATTRS{configuration}==""
   ATTRS{bNumInterfaces}==" 1"
   ATTRS{bConfigurationValue}=="1"
   ATTRS{bmAttributes}=="e0"
   ATTRS{bMaxPower}=="  0mA"
   ATTRS{urbnum}=="201"
   ATTRS{idVendor}=="1d6b"
   ATTRS{idProduct}=="0002"
   ATTRS{bcdDevice}=="0206"
   ATTRS{bDeviceClass}=="09"
   ATTRS{bDeviceSubClass}=="00"
   ATTRS{bDeviceProtocol}=="01"
   ATTRS{bNumConfigurations}=="1"
   ATTRS{bMaxPacketSize0}=="64"
   ATTRS{speed}=="480"
   ATTRS{busnum}=="1"
   ATTRS{devnum}=="1"
   ATTRS{version}==" 2.00"
   ATTRS{maxchild}=="8"
   ATTRS{quirks}=="0x0"
   ATTRS{authorized}=="1"
   ATTRS{manufacturer}=="Linux 2.6.25.10-47.fc8 ehci_hcd"
   ATTRS{product}=="EHCI Host Controller"
   ATTRS{serial}=="0000:00:1d.7"
   ATTRS{authorized_default}=="1"

 looking at parent device '/devices/pci0000:00/0000:00:1d.7':
   KERNELS=="0000:00:1d.7"
   SUBSYSTEMS=="pci"
   DRIVERS=="ehci_hcd"
   ATTRS{vendor}=="0x8086"
   ATTRS{device}=="0x24dd"
   ATTRS{subsystem_vendor}=="0x1043"
   ATTRS{subsystem_device}=="0x80a6"
   ATTRS{class}=="0x0c0320"
   ATTRS{irq}=="23"
   ATTRS{local_cpus}=="ffffffff"
   ATTRS{modalias}=="pci:v00008086d000024DDsv00001043sd000080A6bc0Csc03i20"
   ATTRS{enable}=="1"
   ATTRS{broken_parity_status}=="0"
   ATTRS{msi_bus}==""

 looking at parent device '/devices/pci0000:00':
   KERNELS=="pci0000:00"
   SUBSYSTEMS==""
   DRIVERS==""

 

Więc co wpisać do reguł udev-a, żeby aparat tworzył urządzenie blokowe /dev/camera?

 

// sorry, być może pytanie jest elementarne, ale przez marnych 14 lat obcowania z uniksami, w tym ostatnich 9 z Linuksem, nie miałem do czynienia z konfigurowaniem urządzeń, z wyjątkiem dopieszczania fstab-a i zmiany właściciela cdrom-ów we wczesnych Fedorach.

Odnośnik do komentarza
Udostępnij na innych stronach

Więc co wpisać do reguł udev-a, żeby aparat tworzył urządzenie blokowe /dev/camera?

 

...być może pytanie jest elementarne,

 

Nie jest wcale elementarne! Z tych danych co dałeś, wynika że może się nie dać tego zrobić. Czy masz dostęp do tego aparatu na jakimkolwiek systemie jak do dysku przenośnego (mass-storage USB mode)? Bo jeżeli np Windows (fuj!) wymaga oprogramowania żeby dostać się do fotek, to może być taka "uroda" tego aparatu. Analogicznie jak z mp3playerami. Jedne są widziane jako dyski, inne nie.

 

Dodatkowo, przemawia za tym to co napisałeś o czytniku:

 

Ale kiedy ją wkładam do czytnika, udev robi grzecznie /dev/sdd i /dev/sdd1. Zaś z aparatu -- tylko /dev/usbdevX.X_epXX.
Odnośnik do komentarza
Udostępnij na innych stronach

@Sorror: ,,z wodotryskami'' == z włączonym uruchamianiem kio_mounthelper, kio_media itp. Ale to się dzieje via HAL, na wyższym poziomie niż udev, więc nie spodziewam się nic więcej w /dev.

 

@Arabski: dzięki. Nie sprawdzałem na innym systemie; wezmę do pracy to zobaczę w Windows...

 

Problem nie jest moim priorytetem, nie zamierzam zgłębiać go do śmierci ;)

Zależy mi, żeby obsługa odbywała się tak samo, czy jestem zalogowany w samym shellu, czy w MWM, czy w wypasionym KDE. A to się powinno dać, nawet jeżeli inaczej, niż przez urządzenie blokowe.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...