Canon PIXUS iX6830がStandard TCP/IPに対応してない不便
仕事先でA3用紙に印刷する目的で「PIXUS iX6830」というCanonのインクジェットプリンターを使用しているのですが、この機種は実に維持管理がやりにくいです。なぜなら公式のドライバインストーラーで作成すると、「Canon BJ Network Port」というCanon独自のポートを作成するので後から修正が出来ません。
USB接続で使用している場合はそれほどでもありませんが、管理上の不都合が生じるのは、ネットワーク接続で使用している場合なのです。
ネットワーク接続している時点で、複数のWindowsパソコンからプリントアウトすることになると思うので、いちいちPCの台数分の手間が発生します。
具体的には下記のようなケースではかなりストレスを感じます。
- プリンターのIPアドレスの変更時
- Wi-Fi接続からイーサネット接続(逆もしかり)に変更時
- 故障やインク吸収体フルで本体交換時
ネットワークアドレス(IPアドレス)とMACアドレスを組み合わせた情報で「Canon BJ Network Port」をインストーラーが作成している様ですが、プリンター設定画面から変更できないのが課題となります。
なぜ、Standard TCP/IPでLPRポートを作成させてくれないのか?かなり疑問のある製品なのですが、Canonは独自実装を好む傾向があるので察するしかありません。
しかも、ドライバインストーラーは、セグメント内の自動検出から行う仕様になっており、IPアドレスを指定することが出来ません。セグメント違い(ルーター越え)の場合は検出されませんので、いちいちPCのIPアドレスをプリンターと同一セグメントにアドレスに一時的に変更して検出させてインストールする手間が発生します。せめてインストーラーでIPアドレスを指定できればまだマシなのですが・・(センスが悪いと思う)
解析して技術的に管理の手間を減らしたい
Windowsのプリンター設定の多くは、レジストリに保存されていることが多いです。幸いというかMACアドレス値はユニークな値なので、既に設定されているプリンターのMACアドレスを元にレジストリを検索してみると発見することが出来ました。
レジストリの保存場所
レジストリ内を検索することでレジストリの保存場所を特定しました。
KEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Print\Monitors\Canon BJNP Port\PortsCode language: PHP (php)
ここにBJ Network Portが保存され3個のレジストリ値が入っています。
- TargetAddress(DWORD)
- TargetMAC(TEXT)
- TargetPort(DWORD)
TargetAdressについて
TargetAdressは、IPv4アドレスが16進数に変換されている様です。更に4つのオクテットの順序が逆転して、第4オクテット、第3オクテット、第2オクテット、第1オクテットの順に変えられて連結されています。この逆転させることをリトルエンディアンと呼ぶ様です。なにか理由があるのでしょう。
TargetMacについて
MACアドレスについてはそのままテキスト形式で保存されている様です。
TargetPortについて
インストーラーでポートを作成すると、16進数で「21a3」が登録されています。16進数「21a3」をから10進数に変換すると「8611」となり、Canon独自のネットワーク印刷プロトコルが、 UDP 8611番を使っていることからUDPポート番号である裏付けが取れました。
レジストリ生成ツール
レジストリの構造と生成ルールが見つかったので、プリンター・ネットワークのMACアドレスとIPアドレスを指定すると、登録用のレジストリを生成するツールを作成しました。.regファイルをダウンロード出来るようにしています。
Canon BJNP .reg 生成
ポート名: (MACアドレスを入力してください)
このツールについて
このツールはHTMLとJavascriptで作成しているので、Webブラウザがあれば.regファイルを生成出来るので省力化が実現すると思います。
MACアドレス「74-BF-C0-C0-4F-DD」、IPアドレス「192.168.2.239」で生成された「Canon_Port_74BFC0C04FDD.reg」ファイルの例です。問題なければレジストリ結合でプリンターポートが追加されるハズです。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Canon BJNP Port\Ports\CNBJNP_74BFC0C04FDD]
"TargetAddress"=dword:ef02a8c0
"TargetMac"="74-BF-C0-C0-4F-DD"
"TargetPort"=dword:000021a3Code language: PHP (php)
まあコレを使おうという人は限られると思いますが、例外処理は考慮していないので慎重に自己責任で使って下さい。例外処理を加えるなど完成度を高めても良いかも知れませんね。
スプーラーの再起動
もし反映されない場合は、プリンタースプーラーの再起動が必要かも知れません。コマンドプロンプトから下記の2つを実行します。
net stop spooler
net start spooler
最後に
この支援ツールを使うことで、Canon BJNPポートのプリンターを交換したり、ネットワークアドレスを変更した場合には、BJNPポートをレジストリの追加でコントロール出来るので便利だと思います。不要になったBJNPポートは忘れずに削除すればレジストリをクリーンに保てて良いと思います。
Canonのプリンターは管理しづらいのでこの様にして自分で工夫するしか無さそうです。
先にレジストリ結合によってCanonのBJNPポートを作成することで、インストーラーの自動検出に頼らずにプリンターをWindowsに設定できる柔軟性が出来るため、NETBIOSで解決できないセグメント越えのネットワークルーティング先プリンターでも手短にセットアップが可能となりました。個人的にはこの手法でかなり省力化できる様になったと体感しています。(ある程度プリンター設定に精通している人向けの情報です。)
検索用ワード:Canon BJ Network Port作成支援ツール

コメント