#困ったこと
新しく買ったCanonのプリンターTS8230がキャノンのサイトからダウンロードしたインストーラで認識されない。
#環境
Ubuntu 18.04.3 LTS
Linux Kernel 4.15.0-48-generic
Canon TS8230
IJ Printer Driver Ver. 5.70 for Linux
#試したこと
インストーラで必要なパッケージのインストールはできたので、手動で登録してみる。
そのために、/usr/lib/cups/backend/cnijbe2
を実行してみるも、何も表示されない。
※/usr/lib/cups/backend/cnijbe2
は、Canon製のプリンターのCUPS向けバックエンド(多分)。そのまま実行すると、プリンターを検出して教えてくれる。
#原因
初歩的なことで、ファイアウォールのせいだった。
なんとなく一応ufwでファイアウォールをかけていたため、これをすべてオフにしたら検出され、印刷もできるようになった。
先に挙げた/usr/lib/cups/backend/cnijbe2
の挙動を見たところ、どうやらUDPの40000~59999くらいの番号のポートでプリンターと通信しているようで、しかもlsof -i
でみたところこの範囲からランダムにポートを選んでいる(なにか規則があるのかもしれないが)。
また、印刷時も同じことが言えるようで、CUPSのポートを開けておくだけじゃ純正ドライバでは印刷できないようだ。
とても面倒くさい。
#結論
Canonのプリンターで、純正のドライバを使うならポートの開放はCUPSだけではダメ。
40000~59999くらいを開けておけばいけるかもしれない。
ファイアウォールは邪魔。
Linuxで特定のプロセスだけファイアウォールを回避するってできるんだっけ? 知ってる人がいたら誰か教えてほしいです。