Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  UPS APC-1500
  NetMos NM9845
  cisco & syslog
  LAN card`s test
  HDD & UDMA100
  S.M.A.R.T.
  D-Link DE-200TP
  Marvell 88E8053
  D-Link DGE530T
  КПК + FreeBSD
  D-Link DWL-G520
  SkyLink-CDMA
  Atheros AR5007EG
  BlueTooth mouse
  Asus Eee PC
  atacontrol
  SkyStar-2+SlonAx
  TT budget S-1401
  SiS*Mirage*1 на D201GLY2
  NetXtreme BCM5722
  snd_hda
  Peoplenet + C-motech (3G)
  freebsd + huawei 162 gsm modem
  tw_cli
  pc_speaker
  Canon/gphotofs
  Охранная система на FreeBSD+LPT
  Даешь 220 в LPT
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> Шелезяки —> Canon/gphotofs

Монтирование фотоаппарата Canon через gphotofs

Автор: lissyara.


    Предистория. Подарил тёщще на новый год цифровик - Canon PowerShot A480 - попрощще, лишь бы снимал. Третье тысячелетие, а она с мыльницей плёночной рассекает =) К вечеру 1 января, вылезла проблема - цифровик был передан в руки жене, а та захотела смотреть/ковырять фотки в нём на компе...
   Подрубаем к компу, и видим стандартную для Canon картинку:
Jan  7 18:03:56 dc7700p kernel: ugen4.3: <Canon Inc.> at usbus4

Ладно. Это решаемо - топаем в порты и ставим:
dc7700p$ cd /usr/ports/
dc7700p$ make search name=gphotofs
Port:   fusefs-gphotofs-0.4.0_1
Path:   /usr/ports/graphics/fusefs-gphotofs
Info:   Mount PTP camera as a file system
Maint:  pav@FreeBSD.org
B-deps: fusefs-libs-2.7.4 gettext-0.18.1.1 glib-2.26.1_1 jpeg-8_3
libexif-0.6.18_1 libgphoto2-2.4.10.1 libiconv-1.13.1_1 libltdl-2.2.10
pcre-8.11 perl-5.10.1_3 pkg-config-0.25_1 python26-2.6.6
R-deps: fusefs-kmod-0.3.9.p1.20080208_7 fusefs-libs-2.7.4
gamin-0.1.10_4 gettext-0.18.1.1 gio-fam-backend-2.26.1 glib-2.26.1_1
jpeg-8_3 libexif-0.6.18_1 libgphoto2-2.4.10.1 libiconv-1.13.1_1
libltdl-2.2.10 pcre-8.11 perl-5.10.1_3 pkg-config-0.25_1 python26-2.6.6
WWW:    http://gphoto.sourceforge.net/proj/gphotofs/

Port:   sysutils/fusefs-gphotofs
Moved:
Date:   2009-10-05
Reason: Removed

dc7700p$ cd /usr/ports/graphics/fusefs-gphotofs
dc7700p$ make install clean

   Пробуем примонтировать цифровик:
dc7700p$ gphotofs /mnt
dc7700p$ df -h | grep mnt
/dev/fuse0                      0B      0B      0B     0%    /mnt
dc7700p$ ll /mnt/
total 0
drwxr-xr-x  2 root  wheel     0B  1 янв  1970 store_00010001
dc7700p$ ll /mnt/store_00010001/
total 0
drwxr-xr-x  2 root  wheel     0B  1 янв  1970 DCIM
dc7700p$ ll /mnt/store_00010001/DCIM/
total 0
drwxr-xr-x  2 root  wheel     0B  1 янв  1970 100CANON
dc7700p$ ll /mnt/store_00010001/DCIM/100CANON/
total 9434
-rw-r--r--  1 root  wheel   2,0M 18 дек 11:10 IMG_0001.JPG
-rw-r--r--  1 root  wheel   2,6M 31 дек 21:42 IMG_0002.JPG
-rw-r--r--  1 root  wheel   2,7M 31 дек 21:42 IMG_0003.JPG
-rw-r--r--  1 root  wheel   2,0M  7 янв 15:13 IMG_0004.JPG
dc7700p$ 

   Чё-то виднеется. На этом можно было бы и остановится. Но, жене в консоль негоже втыкать. Порылся в панельке управления KDE4 - цифровик такой в списках есть, вот тока цепляться не хочет. Толи нехватает чё-то, толи совсем помойко-ориентированные стали они.
   Ладно. Коммунисты не ищут лёгких путей. Есть sh, есть devd - больше ничё не надо. Для начала включаем дебаг и рестартуем devd:
dc7700p$ grep devd /etc/rc.conf 
devd_flags="-d -D"
dc7700p$ /etc/rc.d/devd restart
devd not running?
Starting devd.
Parsing /etc/devd.conf
setting scsi-controller-regex=(aac|adv|adw|aha|ahb|ahc|ahd|aic
|amd|amr|asr|bt|ciss|ct|dpt|esp|ida|iir|ips|isp|mlx|mly|mpt|ncr
|ncv|nsp|stg|sym|trm|wds)[0-9]+
Parsing files in /etc/devd
Parsing /etc/devd/asus.conf
Parsing /etc/devd/uath.conf
Parsing files in /usr/local/etc/devd

   Подрубаем аппарат, наблюдаем такой девайс на экране
Processing event '? at bus=1 hubaddr=1 port=4 devaddr=3 interface=0 vendor=0x04a9 product=0x31bf devclass=0x00 devsubclass=0x00 sernum="F7D1136708674498A2950C137682C518" release=0x0001 intclass=0x06 intsubclass=0x01 on uhub4'
Pushing table
setting bus=1
setting hubaddr=1
setting port=4
setting devaddr=3
setting interface=0
setting vendor=0x04a9
setting product=0x31bf
setting devclass=0x00
setting devsubclass=0x00
setting sernum=F7D1136708674498A2950C137682C518
setting release=0x0001
setting intclass=0x06
setting intsubclass=0x01
setting bus=uhub4
Processing nomatch event
Testing bus=uhub4 against ^pccard[0-9]+
Testing bus=uhub4 against ^uhub[0-9]+
Executing 'logger Unknown USB device: vendor 0x04a9 product 0x31bf bus uhub4'
Popping table

   Изучение devd.conf подсказывает мысль - править конфиг не надо, достаточно создать инклюд. Что и делаем. Рисуем такой файл (на самом деле, это примерно третий вариант - в первых двух внешнего скрипта не было, просто монтировался цифровик и на рабочем столе создавался симлинк. Была обнаружена проблема, что KDE не всегда корректно его понимала... Причина не понятна, да и красоты хотелось - чтоб значок был какой нужно) - vendor/product/release - из вышеприведённого лога:
dc7700p$ cat /usr/local/etc/devd/canon.conf
# mount canon photo using gphotofs
attach 100 {
        match   "vendor"        "0x04a9";
        match   "product"       "0x31bf";
        match   "release"       "0x0001";
        action  "/root/scripts/canon.A480.sh attach;";
};
# umount when dettach
detach 100 {
        match   "vendor"        "0x04a9";
        match   "product"       "0x31bf";
        match   "release"       "0x0001";
        action  "/root/scripts/canon.A480.sh dettach;";
};

dc7700p$ 

   Плюс дополнительный скрипт, который занимается красивостями - и не забываем сделать его исполняемым:
dc7700p$ cat /root/scripts/canon.A480.sh
#!/bin/sh

# цепляем цифровик
if [ x$1 = "xattach" ]
then
        # монтируем
        /usr/local/bin/gphotofs -o allow_other /mnt;
        # ставим права, на всякий случай
        /bin/chmod 775 /mnt;
        # перебираем всех пользователей
        cd /home/ && ls |
        {
        while read user
        do
                # file path
                file="/home/$user/Desktop/Canon.A480.desktop"
                # create file link
                echo '[Desktop Entry]'                          >> $file
                echo 'Comment[ru]='                             >> $file
                echo 'Comment='                                 >> $file
                echo 'Exec=/usr/local/kde4/bin/dolphin /mnt'    >> $file
                echo 'Icon=camera-photo'                        >> $file
                echo 'Name[ru]=Canon.A480'                      >> $file
                echo 'Name=Canon.A480'                          >> $file
                echo 'StartupNotify=true'                       >> $file
                echo 'Terminal=false'                           >> $file
                echo 'TerminalOptions='                         >> $file
                echo 'Type=Application'                         >> $file
                echo 'X-KDE-SubstituteUID=false'                >> $file
                # set permissions
                chown $user $file
                chmod 755 $file
        done
        }
        exit 0;
fi

# отцепляем цифровик
if [ x$1 = "xdettach" ]
then
        /sbin/umount -f /mnt;
        cd /home/ && ls |
        {
        while read user
        do
                cd /home/$user/Desktop && \
                rm -f /home/$user/Desktop/Canon.A480.desktop
        done
        }
        exit 0;
fi


echo "Usage: `basename $0` {attach|dettach}"

   Далее, убираем дебаг, рестартуем devd и пробуем. Должно работать.

Обновление, от 2011-06-26:
В последнем -CURRENT чё-то снова поменяли, перестало работать. Так что файл инклюда теперь должен выглядеть так:
# mount canon photo using gphotofs
notify 100 {
        match   "vendor"        "0x04a9";
        match   "type"          "ATTACH";
        action  "/root/scripts/canon.A480.sh attach;";
};
# umount when dettach
notify 100 {
        match   "vendor"        "0x04a9";
        match   "type"          "DETACH";
        action  "/root/scripts/canon.A480.sh dettach;";
};

И всё заработает.



Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=5&t=30611.

размещено: 2011-01-07,
последнее обновление: 2011-06-26,
автор: lissyara

оценить статью:

nero777, 2011-01-08 в 18:24:12

лис,как всегда,на высоте!
тёща тоже на фряхе,молодец!

ow, 2011-02-07 в 23:43:58

> dc7700p$ df -h | grep mnt

ведь можно df -h /mnt. зачем grep?

Alex Keda, 2011-02-08 в 9:22:05

привык

keks, 2011-03-20 в 12:38:37

Спасибо за статью. Не дала умерить FreeBSD 8.1 + KDE-4.5.5.
Мини подарок к 8 матра был)))))).
Сказал жене настроил по статье на лисяре автомоунт фотоаппарата Canon A610, на что она мне ответила, для девочек наверное этот способ)))))))). Прям вступление статьи читала)))))))))). Раньше я пользовался Digikam с разрешением на пользователя devfs.rules

FAndrey, 2011-08-13 в 3:20:58

Кстати или что то поменялось или у тебя уже был зарание подгружен модуль fusefs, иначе выдаёт
fuse: failed to open fuse device: No such file or directory
следственно надо либо ручками
# /usr/local/etc/rc.d/fusefs onestart
или прописать его в rc.conf
после этого вроде и gphotofs работает, надо посмотреть на твои решения в скриптах :)

Alex Keda, 2011-08-13 в 11:03:34

Ну, вообще-то, при установке этого самого фузе - вылезает окно с галкой про загрузку модуля. И он автоматом попадает в атозагрузку =)

FAndrey, 2011-08-13 в 14:31:44

AUTOSETUP=off (default)
так что если сильно зарание не позаботится, то всё пройдёт тихо и спокойно.
Сам fusefs когда то 100 лет назад поставился как зависимость к чему то, и не юзался. Соответственно при установке gphotofs оно просто глянуло что уже есть и всё, ничего доконфигурировать не надо было.


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной

Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server

Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs

Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec

Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash

Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT

Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3

Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN

На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm

Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth&quota

Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 58 чел.
За последние 30 мин было: 215 человек
За сегодня было
4154 показов,
1058 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0602 секунд
Из них PHP: 38%; SQL: 62%; Число SQL-запросов: 77 шт.
Исходный размер: 112387; Сжатая: 21623