CT-S280（USB）接続方法

## 概要

CT-S280のUSBインターフェースは、プリンタクラスに対応していません。接続してもLinuxのカーネルは 何が接続されたのか理解することができません。

このページでは、USBインターフェースのCT-S280をカーネルとCUPSに認識させる方法を説明します （カーネルはver2.6を使用するものとします）。

ここでの作業では、カーネルを改造します。改造方法を誤ると、Linuxが起動しなくなる可能性も ありますので、十分に注意して行ってください。

## CT-S280仮想シリアルポートについて

CT-S280のUSBインターフェースは、USB−シリアルコンバータとシリアルインターフェースで 構成されています。プリンタとコンピュータを接続しますと、コンピュータに新たなシリアルポートが 追加され、そのポートにシリアルインターフェースのプリンタが接続された形になります。

内部のUSB−シリアルコンバータにはFTDI社製のコントローラと互換性のあるものが使われています。

## ドライバのインストール

# カーネルの設定

カーネルにFTDIシリアルコンバータを使用するように設定します。
カーネルのソースが展開されているディレクトリに移動し、

make menuconfig

を実行します。表示された項目の中から、“Device Drivers”→“USB support”→ “USB Serial Converter support”の順にたどって設定画面を開きます。途中必要な項目を これらのメニューを使えるようにするために有効に（カーネル組み込みでもモジュール読み込みでも かまいません）設定しておいてください。

この画面に“USB Serial Converter support”だけでドライバ一覧が表示されていない場合は、この項目を 有効にしてください。一覧が表示されるようになります。

表示されたドライバ一覧の中から、“USB FTDI Single Port Serial Driver (EXPERIMENTAL)”を有効に します。

# ソースファイルの修正

ディレクトリ“driver/usb/serial/”内にある“ftdi_sio.c”を修正します。

id_table_conbined という usb_device_id 構造体リストにCT-S280のVendor ID（0x2730）とProduct ID （0x1000）を加えます。 具体的には、
{ USB_DEVICE(0x2730, 0x1000) },
という行をこのリストに加えます。

以下のリストは、Version 2.6.23.1 の ftdi_sio.c の修正部分の抜粋です。

修正前

          { USB_DEVICE(TML_VID, TML_USB_SERIAL_PID) },
          { USB_DEVICE(OLIMEX_VID, OLIMEX_ARM_USB_OCD_PID),
          .driver_info = (kernel_ulong_t)&ftdi_olimex_quirk },
          { },                                    /* Optional parameter entry */
          { }                                     /* Terminating entry */
      };

修正後

          { USB_DEVICE(TML_VID, TML_USB_SERIAL_PID) },
          { USB_DEVICE(OLIMEX_VID, OLIMEX_ARM_USB_OCD_PID),
          .driver_info = (kernel_ulong_t)&ftdi_olimex_quirk },

          {USB_DEVICE(0x2730,0x1000)},     //CT-S280

          { },                                    /* Optional parameter entry */
          { }                                     /* Terminating entry */
      };

# コンパイル

モジュールをコンパイルします。ドライバの読み込み方の設定によりコンパイル方法が異なります。

モジュール読み込みに設定した場合
  モジュールをコンパイルしてください。
  make modules

カーネル組み込みに設定した場合
  カーネル本体をコンパイルしてください。
  make

# インストール

できあがったモジュールまたはカーネルをインストールしてください。 なお、この作業にはroot権限が必要です。

モジュール読み込みに設定した場合
  モジュールをインストールしてください。
  make modules_install
  インストール後の再起動は不要です

カーネル組み込みに設定した場合
  カーネル本体をコンパイルしてください。
  make install
  インストールが完了したら、再起動してください。

# モジュールの登録

CT-S280が接続されたときに読み込むモジュールをカーネルに登録します。以下のコマンドを 実行してください。
modprobe ftdi_sio vender=0x2730 product=0x1000
コマンド実行後、CT-S280を接続し、dmesg コマンドでカーネルの出力するメッセージを確認します。
dmesg | tail
メッセージに

      usb 1-1: new full speed USB device using ohci_hcd and address 6
      usb 1-1: configuration #1 chosen from 1 choice
      ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
      drivers/usb/serial/ftdi_sio.c: Detected FT232BM
      usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0

というメッセージが表示されていれば、ドライバは正しく動作しています。なお、表示される数字や ポート名は、使用しているシステムやUSB機器の接続方法などにより変化しますので、注意してください。
なおこのメッセージ内で、追加されたデバイス名（上の例では、最終行にあるttyUSB0）が CUPS を 設定するときに必要になります。

## CUPSの設定

# CUPSの仮設定

解説ページのCT-S280についての説明を読みながら、CUPSにCT-S280を 登録します。
なお、登録中の接続先の選択肢にUSB−シリアルコンバータに割り振られたポート名（ttyUSBn）が ありませんので、シリアルポート（ttySn）を暫定的に選んでください。
ここでシリアルポートの設定は、下表のように設定します。

速度 | 115200bps
データ長 | 8Bit
パリティ | なし
ストップビット | 1
フロー制御 | ハードウェア (RTS/CTS)

接続先が仮の状態なので、テスト印字はできません。ページ設定が終わったところで登録作業を中断して ください（テスト印字は後で行います）。

# CUPSの接続先変更

一端CUPSを停止させて下さい。
/etc/rc.d/init.d/cups stop
次にテキストエディタで、設定ファイル（/etc/cups/printers.conf）を開き、CT-S280の接続先を 変更します。

  `DeviceURI serial:/dev/ttySn?baud=115200+bits=8+parity=none+flow=hard`

となっている部分を

  DeviceURI serial:/dev/ttyUSBm?baud=115200+bits=8+parity=none+flow=hard

と修正します。上の例（太字部）で、ｎには仮設定で使用したシリアルポートの番号を ｍにはプリンタを接続したときに追加されたシリアルポート（通常は０）を指定します。

修正が終わったら、CUPSを起動します。

/etc/rc.d/init.d/cups start

# テスト印字

解説ページに従ってテスト印字を行い、動作を確認してください。

## 注意

今後新しいカーネルをインストールすると、USB−シリアルコンバータの改造が無効になります。 カーネルを入れ替えるときは、ドライバの改造も忘れずに行ってください。