Linux PCがUSB接続のデバイスを認識しないとき・・・
最近、だいたいのデバイスをLinux PCに
USBでつなぐと自動で認識します。
しかし、そうでない場合もあります。
でも ○○.hexという形でドライバーが存在する・・・。
そんなときはどうしましょう?
というのも、
今、天文をやっている人の間では有名な
ST-10 (Sbig社)
というCCDカメラをLinuxで制御しようと
試みており、
その過程で上のような壁にぶつかりました。
ひとまず、
/usr/sbin/lsusb
とタイプ。
あるいは
cat /proc/bus/usb/devices
でも良いです。
今回は
Bus 002 Device 006: ID ****:**** Santa Barbara Instrument Group SBIG Astronomy Camera (without firmware)
と表示。
デバイス情報は見えていますが、ファームウエアのダウンロードに
ずっこけている様子。
ここで、
/sbin/fxload コマンドを使います。
fxload はEZ-USB (USBのマイクロコントローラー)へfirmwareをダウンロードするコマンド。
/sbin/fxload -t an21 -I /lib/firmware/sbigucam.hex
とタイプし、再度lsusbすると、
Bus 002 Device 006: ID ****:**** Santa Barbara Instrument Group SBIG Astronomy Camera (with firmware)
今度はちゃんとファームウエアがダウンロードされました。
ちなみに、"-t"の オプションはEZ-USBのタイプ。
an21
fx
fx2
fx2lp
の4タイプあるようです。
今回はan21でした(sbigのデフォルトでは"fx2"となってましたが、
このままだとうまくインストールできないのでおそらく誤り)。
最後にUSBがつながった時に自動で認識するように
/etc/udev/rules.d/51-sbig.rules
というファイルを追加。
このファイルの中身は、
# Name: 51-sbig.rules
# Version: 1.0
# Author: Jan Soldan (JS) jsoldan@asu.cas.cz
# Author: Matt Longmire (ml) matto@sbig.com
# Description: Upload firmware to SBIG USB CCD cameras.
# History:
# 2005-11-24: The version 1.0 released.
# 2008-11-18: Added support for ST-7/8/9 Pro cameras with external Guide Head
# 1. Pre-renumeration device IDs
#=============================
# SBIG ST-7/8/9/10/2K cameras
BUS=="usb", SYSFS{idVendor}=="0d97", SYSFS{idProduct}=="0001", SYSFS{bcdDevice}=="0001", RUN+="/sbin/fxload -I /lib/firmware/sbigucam.hex"
# 2. Post-renumeration device IDs:
#==============================
# We run /etc/hotplug/usb/sbig.py script to add write permission to newly connected USB camera.
# Because we use libusb driver, so we do not create device node here!
BUS=="usb", SYSFS{idVendor}=="0d97", SYSFS{idProduct}=="0101", RUN+="/etc/hotplug/usb/sbig.py %k"
といった感じになってます。
LinuxでUSB接続のデバイスを
どうやって自動認識しているのか
身をもって勉強できた時間でした。
はい。
★☆★☆★☆ ナウでヤングなレンタルサーバー!ロリポップ! ☆★☆★☆★
月額100円(税抜)~容量最大400GB!大人気のWordpressも簡単インストール★