プリンタで苦戦中(後日談)

プリンタで苦戦中(予告編)を書いておきながら,その後,途絶えていた。

結論から言うと,プリンタを入れ替えることになり,無線LAN対応の独立したプリンタ(直接LANにつながる)を購入したことで,実験は中止となってしまった。

それまでの状況がどうだったかというと…。
○一応,クライアントのWinXPマシンから印刷できるようにはなった。
・メーカー(Canon)の提供するLinux用ドライバ+バックエンド処理を導入
・WinXPから接続するプロトコルは,IPPで,接続先もURLで指定
・一部機能は使えない(プリンタの情報取得など)
・WinXPで共有していた時のクライアント数の制限は解消され,便利になった
○しかし,使っていると,印刷できなくなる時がある
・CUPSやCanonが提供するバックエンド処理のサービス(CCPD)が通信中のまま
となり,処理をうけつけなくなっている
・似たような状態でも異なる原因による複数のパターンがありそう
・いずれも,WinXPマシンとの通信が原因のように見える
・CCPDやCUPSを再起動すると正常化する場合もあるが,ひどい時は,Linuxを
再起動しないとダメだった
○だましだまし使ってみていたが,管理者(自分)が不在の時には,他の人は不具合を
解消できないので,不評だった…。

あれこれ試行錯誤していたのだが,上記の印刷できなくなる不具合は,根本的な解決ができないままだった。

そもそも,CanonはCAPTという独自の処理で通信を行い,印刷処理を早くしているようである。しかし,それは,標準の規格外のものなので,例えば,WinXP SP2 以降では,Windowsのファイアウォールで通信が妨げられてしまい,ドライバとともに提供される設定ツールでCAPTの使用するポートを開放しないと,印刷が極端に遅くなったり,印刷できなかったりするという,ちょっと厄介なもののようである。もちろん,セキュリティソフトのファイアウォールでも遮断されないようにする必要がある。

で,Linux上では,CUPSがIPPでデータを受け取り(よってSambaではプリンタ共有の設定は不要?),それをCCPDに渡して処理しているようなのだが,そのどこかで処理が進まなくなってしまう。通信エラーを無限にリトライしているような感じである。Linux上でrootで該当するプロセスをkillしても,psでみると死んでいない…。

というわけで,ほとんど参考にならないかと思いますが,Canon のプリンタをLinuxにつないで共有し,クライアントのWindowsマシンから印刷したいという方は,ぜひ,頑張ってみてください。

プリンタで苦戦中(予告編)

職場では,CanonのLBP3210というプリンタを使っている。

WinXPマシンの1つにUSBで接続されており,共有設定をして,LAN上の他のWinXPから印刷できるようにしている。ごく一般的な構成であろう。

しかし,時々,他のPCから印刷できなくなるときがある。しかも,印刷できるPCとできないPCがあるのだ。そんな時は,プリンタサーバとなっているPCを再起動すると印刷できるようになることが多い。

実は,恥ずかしながら最近まで知らなかったのだが,WinXPの共有機能には,他のPCからの接続を受けつける数に上限があり,Homeエディションでは,5つまでだそうである。そりゃ,印刷できなくなるわな。しかも,再起動すれば,いったんリセットされて数え直されるわけだから,印刷できるようにもなるわけだ。

で,以前から,Sambaでファイルサーバとして使っているLinuxマシンに,プリンタもつなげないものかと思っていた。そもそも,ずーっと以前(Win98の頃)は,ファイルサーバのLinuxマシンにつなぐ設定をしていた。が,プリンタの機能の高度化により,純正ドライバ(=Win用)でないとうまく動作しなくなったり(プリンタの状態を監視する機能等のための双方向通信とか…),店舗が増えて使用するプリンタの種類も様々となり,全部を同じように設定できなくなったり,WinXPになってWindows機につなぐ分には設定がしやすくなり(ドライバ入れてプラグ&プレイ,順序は逆のこともあるが),各店舗で模様替えをしたり,PCの入れ替えがあった際に,PCに詳しくない人でも設定できるので,WinXPにつないで共有しとけばいいじゃん,ということになり,Linuxサーバにはつながなくなったのだった。

…上記のあたりまでは,前任者の方がやっていた時代で,上に書いた説明は自分の認識なのだが,実際にはもっと異なる事情があったのかもしれない。ともあれ,プリンタはLinuxサーバにはつながないものとなった。

そもそも,ずーっと以前にLinuxマシンにプリンタをつないでいた頃は,まだ,cupsとかは無かった時代である(たぶん)。無かったは言い過ぎかもしれないが,少なくとも,広まってはいなかった。linux上では,Samba経由の印刷データを,汎用のドライバで処理していただけのはずだ。使っていたのは,新しくてもVine2.xとかであった。サーバは詳しい人(=担当者1名)のみが操作できる世界で,他の人は,怖くて触れない(間違って電源を切っちゃダメよ!)ものだった。サーバの電源をOffにするために,わざわざ担当者が当該店舗に出向いて,telnetでログインして,shutdown -h nowするような状況だったわけである(ま,面倒だからファイルにアクセスしていない状態で電源ボタンを長押しして切ってしまうことも多かったのだが→ごめんよ,ハードディスク)。

話はそれるが,比較的最近になって,acpi等のおかげで,電源ボタンを押せばシャットダウンするような設定ができるようになった。前からできたのかもしれないが,現在の担当者(=me)が,そのようにできることを知り,設定したのは,つい2年くらい前のことである(Vine3.x/4.x)。最近(Vine5.x)では,デフォルトでそうなっているようであるが。

で,話を戻すと,前から,以前のように,Linuxサーバ機にプリンタを接続できれば,プリンタをつないでいるWinXPをわざわざ起動しなくても印刷できるようになり,便利であろうとは思っていたのだが,最近になって,上記のようにWinXPの共有では接続数に限りがあることが発覚したので,一念発起して,設定してみようと思い立ったのである。

が,なかなか一筋縄ではいかないのである…。