vine-users ML アーカイブ



[vine-users:077283] Re: Canon LBP-1210プリンタの接続ポ ートが勝手に変わって、印 刷できないー続き

  • From: 長南洋一 <cyoichi@xxxxxxxxxxxxxxx>
  • Subject: [vine-users:077283] Re: Canon LBP-1210プリンタの接続ポ ートが勝手に変わって、印 刷できないー続き
  • Date: Wed, 18 Jul 2007 12:00:49 +0900 (JST)
長南です。

だから、簡単に試せるハードウェアよりの方法を説明して差し上げたのに。

プリンタが一個しか接続していないときは、当然それが lp0 になります。
二個接続しているときは、システムに認識された順に lp0、lp1 に
なります。おそらく認識される順番は、USB ソケットの位置によって
決まるのでしょうから、LBP-1210 一台だけのときも、ip4100 と二台
一緒につないだときも、LBP-1210 を lp0 にするには、二つのプリンタの
USB プラグを差すソケットを現在とは逆にすればよいのだと思います。

# でも、切替器を通じてプリンタを接続していると、どこかでおっしゃて
# いました。そうなると、話はもっと複雑なのかもしれません。

とは言え、認識の順番がソケットの位置で決まるというのは、わたしの
推測です。間違っているかもしれません。また、udev のルールを記述する
方法の方がずっと洒落ています(どういう順番でどのソケットにつなごうと、
同じシンボリック・リンクを通してプリンタが使える)。そこで、udev の
ルールを利用する方向で考えるなら−−

/usr/share/doc/udev-097/writing_udev_rules/index.jp.html に
こんなことが書いてあります。「複数SYMLINK形式の使い方」の項。

  普通のルールと同様に、udevがNAMEパラメータを指定しているルールを
  見つける前にこの形式のルールを見つけたときだけ有効になります。

ですから、/etc/udev/rules.d/50-udev.rules へ追加した例の記述ですが、
その位置が問題なのだと思います。50-udev.rules に次のような行が
あります。

  BUS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k"

問題の記述は、この行よりも前にしなければならないのだと思います
(つまり、ファイルのできるだけ頭の方でやっておく)。
あるいは、/etc/udev/rules.d/20-local.rules とでもいうファイルを
作って、「ACTION=="add", BUS=="usb", SYSFS{idVendor}=="04a9",
SYSFS{idProduct}=="2617", SYMLINK+="lbp_1210"」などの記述は、
そちらのファイルに書く(ファイルの頭につく数字を 50 より小さくする)。

# それから、上の記述から ACTION=="add", を取ってみるという手も
# 試してみるべきかもしれません。わたしとしては  ACTION=="add", が
# あってもよさそうに思うのですが、writing_udev_rules/index.jp.html
# では、ACTION=="add", なしでやっているようですから。

同じことをやって、一度はうまくいったのに、今度はうまくいかない理由は
わかりません。でも、うまくいかないときは、/dev/lpb_1210 などはシンボ
リック・リンクですから、

  ls -l /dev/lpb_1210

などで、リンク先を確かめた方がよいでしょうね。

急がば回れです。やはり、udev のルールを利用するのなら、よくわから
なくても(わたしもよく理解できません)、/usr/share/doc/udev-097/
writing_udev_rules/index.jp.html を一度通読しておくべきだと思います。
ただし、この文書は  == とするべきところも = と書いています。ですから、
50-udev.rules などと比較対照して読まなければなりません。そのことに
ついては、田添さんが「[vine-users:076812] udev のドキュメントの相違に
ついて」でご指摘になっていました。

-- 
長南洋一