概要
Palm OSをBluetooth経由でインターネットに接続する の記事に続き、今度は赤外線通信による Palm OS のインターネット接続を検証します。
CLIE には赤外線ポートが搭載されており、かつては一部の ISDN 公衆電話に搭載されている赤外線ポートを利用してインターネット接続が行えたようです。
今回、偶然にも IrSTICK という IrDA ドングルを手に入れることができました。これを使用して、赤外線によるインターネット接続を再現してみます。
必要な物
-
Ubuntu 18.04 をインストールした PC
- USB パススルーが可能であれば、 VirtualBox などを利用することも可能です
- IrDA ドングル
- このドングルの入手性が極めて低い、という最大の問題がありますが……
古いノート PC であれば本体に赤外線ポートが搭載されている場合がありますが、そのような PC で Ubuntu 18.04 が動作するかは不明です。
より古い Debian などをセットアップすることで、同様の環境が構築可能かもしれません。
なぜ Ubuntu 18.04 が必要なのか
この記事をお読みの皆さまであればご存知の通り、 IrDA (赤外線通信) は PC ではほぼ普及しませんでした。その上、 Bluetooth や無線 LAN の登場によってただでさえ少ない立場を急速に追われ、最終的には誰にも使われないデバイスとなりました。
そのため Linux カーネルの IrDA ドライバは長年メンテナンスされず、それどころかセキュリティ脆弱性の温床となっていたため、Linux カーネル v4.17 で削除されています。
Ubuntu 18.04 は Linux カーネル v4.15 であり、 IrDA をサポートする最後の Ubuntu です。ただし、セキュリティアップデートなどのサポートは 2023 年に終了していますので、自己責任にてご利用ください。
IrSTICK について
IrSTICK というドングルには、 SigmaTel 社の STIr4200 というチップが使用されています。
sudo dmesg | grep -i irda
[ 2.258406] usb 2-2: Product: IrDA/USB Bridge
[ 2.301350] irda: module is from the staging directory, the quality is unknown, you have been warned.
[ 2.301408] irda: module verification failed: signature and/or required key missing - tainting kernel
[ 2.311925] SigmaTel STIr4200 IRDA/USB found at address 3, Vendor: 66f, Product: 4200
[ 2.312378] stir4200 2-2:1.0: IrDA: Registered SigmaTel device irda0
このドングルを Linux に接続すると、 stir4200 というドライバが読み込まれます。
lsmod | grep ir
stir4200 20480 0
irda 204800 1 stir4200
セットアップ
パッケージのインストール
必要なパッケージをインストールします。
sudo apt-get install irda-utils ppp
pppd の設定
/etc/ppp/peers/irda を作成します。
/dev/ircomm0
115200
local
passive
noauth
nodetach
noccp
ms-dns 8.8.8.8
192.168.50.1:192.168.50.2
debug
接続
カーネルモジュールの有効化
IrDA によるシリアル通信を行うため、 ircomm-tty モジュールをロードします。
sudo modprobe ircomm-tty
モジュールが正常にロードされているかを確認します。ロードに成功していれば、一覧に ircomm と ircomm_tty が表示されます。
lsmod | grep ir
stir4200 20480 0
ircomm_tty 40960 0
ircomm 24576 1 ircomm_tty
irda 204800 3 stir4200,ircomm,ircomm_tty
また、モジュールが有効化されると、 /dev/ircomm0 などのデバイスが作成されます。
ls /dev/ircomm*
/dev/ircomm0
/dev/ircomm1
/dev/ircomm2
...
IrDA プロトコルスタックへのアタッチ
ネットワークデバイス一覧を表示すると、 irda0 というデバイスが作成されているのを確認できます。
ip address
4: irda0: <NOARP> mtu 2048 qdisc noop state DOWN group default qlen 8
link/irda 00:00:00:00 brd ff:ff:ff:ff
この irda0 をシリアル通信に利用できるよう、 -s オプション付きでアタッチします。
sudo irattach irda0 -s
自動起動化
以上までに行った IrDA ドングルの初期化処理を、再起動後も実行されるよう設定します。
/etc/modules を編集し、 ircomm-tty モジュールを起動時に読み込むよう明示します。
ircomm-tty
また、 apt-get で irda-utils パッケージをインストールすることで、 irda-utils というサービスが追加されます。このサービスの設定ファイルである /etc/default/irda-utils を編集します。
ENABLE="true"
AUTOMATIC="true"
DISCOVERY="true"
DEVICE="irda0"
DONGLE=""
SETSERIAL="/dev/ircomm0"
USE_SMCINIT="no"
MAX_BAUD_RATE="115200"
irda-utils サービスを有効化します。
sudo systemctl enable irda-utils
IrDA 接続のデバッグ
irdadump を実行すると、赤外線通信に関するデバッグログを出力します。
sudo irdadump -i irda0
irdadump を実行している状態で IrDA ドングルに CLIE の赤外線ポートを近づけると、以下のようなメッセージが繰り返し表示されます。
ログが IrOBEX なので、何も操作していない時の CLIE は赤外線によるファイル送受信を待ち受けていることが読み取れます。
09:00:00.312596 xid:cmd 420b42c2 > ffffffff S=6 s=0 (14)
09:00:00.420162 xid:cmd 420b42c2 > ffffffff S=6 s=1 (14)
09:00:00.528122 xid:cmd 420b42c2 > ffffffff S=6 s=2 (14)
09:00:00.635995 xid:cmd 420b42c2 > ffffffff S=6 s=3 (14)
09:00:00.744140 xid:cmd 420b42c2 > ffffffff S=6 s=4 (14)
09:00:00.852131 xid:cmd 420b42c2 > ffffffff S=6 s=5 (14)
09:00:00.929339 xid:rsp 420b42c2 < 5f630844 S=6 s=5 Palm III hint=8220 [ PDA/Palmtop IrOBEX ] (26)
PPP サーバーの待ち受け
Linux で pppd コマンドを実行し、通信を待ち受けます。
sudo pppd call irda
CLIE 側から接続
CLIE 側で 環境設定 → ネットワーク を選び、設定を行います。
| 項目 | 設定値 |
|---|---|
| サービス | 何でもよい (@nifty等) |
| ユーザー名 | 空欄 |
| パスワード | 空欄 |
| 接続 | 赤外線 |
CLIE の「接続」ボタンを押すと接続が実行されます。このタイミングで、 CLIE の赤外線ポートを IrDA ドングルに向けます。
接続に成功すると、Linux には ppp0 というネットワークデバイスが作成されます。
ip address
5: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 3
link/ppp
inet 192.168.50.1 peer 192.168.50.2/32 scope global ppp0
valid_lft forever preferred_lft forever
ルーティングの設定
CLIE が Linux を経由してインターネットに出られるように、IP フォワーディングを追加します。
接続先のネットワークデバイス名 enp0s3 は適宜変更してください。
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
sudo iptables -A FORWARD -i ppp0 -o enp0s3 -j ACCEPT
sudo iptables -A FORWARD -i enp0s3 -o ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
Web 閲覧
CLIE の付属 CD に入っている NetFront ブラウザをインストールすることで、赤外線接続によるインターネットブラウジングを楽しむことができます!

