プリンターを仮想COMの設定にて、Linuxで使用する場合のドライバーが欲しいのですが、紹介下さい。


弊社のCT-S280というプリンターでは、FTDIという会社のUSBシリアル変換チップを使っておりますが、USBとして仮想COMしか用意していないため、CUPS用の説明用に用意された下記のページに仮想COMドライバーの説明を用意しております。
http://www.citizen-systems.co.jp/english/support/download/printer/driver/cups/source/vcom.ja.html
(この説明に出てくるファイルの中でLinux上で見つからないソースファイルは、FTDI社のサイト
http://www.ftdichip.com/Drivers/VCP.htm
にて入手できます。)

CT-S280以外のプリンターで、このチップを使わずに実現している仮想COMについてもFTDIのチップと動作が互換になるように設計されておりますので、上記のサイトの説明は他のプリンターの仮想COMにも通用します。
ただし、FTDIのチップはバージョンにより動作が違っていて、仮想COMドライバーもチップのバージョンに合わせて動作を変えるようになっているようです。
弊社の仮想COMは古いFTDIのチップの仕様をベースにしていますが、プリンターのモデルによっては新しいチップのバージョンと認識されしまう場合があり、正しく動作しないケースがあります。(文字化けします。)

対策として、上記のサイトで説明されているUSBのIDの変更以外に、追加のパッチを当てる方法がありますので、以下に紹介します。

(kernel ソースの展開先)/drivers/usb/serial/ftdi_sio.c

の CT-S280 のパッチ(ただし、VID=0x2730,PID=0xfff)の他に
ftdi_determine_type 関数にパッチを当てて下さい。
---------------------------------------------------------------------
この関数の最初の方に

version = le16_to_cpu(udev-> …

と書かれた行があります。この直後(すぐ下のif文で分岐する前)に

if( version == 0x002 ) version = 0x400;

という行を追加(入れ替えではありません)して、bcdDevice が 4 と同じように扱われるようにして下さい。
---------------------------------------------------------------------
なお、同じPCにFTDI のチップを使ったデバイスが接続されていた場合は、この変更がそのデバイスの動作に影響する可能性があります。ご了承下さい。
また、この方法でも接続直後にだけゴミ印字が混ざることがあります。

このエントリーにコメントできません。