1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Palm OSを赤外線経由でインターネットに接続する

Posted at

irda1.jpg

概要

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 を作成します。

/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

モジュールが正常にロードされているかを確認します。ロードに成功していれば、一覧に ircommircomm_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 モジュールを起動時に読み込むよう明示します。

/etc/modules
ircomm-tty

また、 apt-get で irda-utils パッケージをインストールすることで、 irda-utils というサービスが追加されます。このサービスの設定ファイルである /etc/default/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 ブラウザをインストールすることで、赤外線接続によるインターネットブラウジングを楽しむことができます!

irda2.jpg

参考文献

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?