Network Users' Group ``wheel'' / Dai ISHIJIMA's Page /
RTA55i / FreeBSDでコンソールを使う

最終更新日: 2002/06/27


FreeBSD4.4RでRTA55iのUSBコンソールを使う


「やっぱりルータの設定は、 ウェブブラウザとかteletぢゃなくって、 コンソールからだよな」 と思ってましたが、RTA55iは これまで使ってたRTA50iやRTA52iと違い、 シリアルコンソールをつなぐポート(要するにRS232Cポート) がありません。

ルータの設定は、 FreeBSDマシンからシリアルでつないでやるのが好みだったんで、 同じようにできないか (telnetやブラウザを使わずに済ませられるか) と思ってましたが、 Windowsなんかだと、付録のCDからドライバを入れるかなんかしたら (実はよく知らない ;^^) USBがコンソールポートになるってことで、 いろいろ試してみました。

USBが使える状態のFreeBSDマシン (Panasonic CF-B5, FreeBSD 4.4R) に、RTA55i付属のUSBケーブルで つないでみると、/var/log/messagesに

	ugen0: YAMAHA Corporation RTA55i, rev 1.10/46.16, addr 2
こんなのが出て、一応認識してる模様。 usbdevs(8)コマンドを使うと、
	% usbdevs
	addr 1: UHCI root hub, Intel
	 addr 2: RTA55i, YAMAHA Corporation
こんな感じ。

「USBモデムで認識するんとちゃうんかなぁ」と一瞬悩みましたが、 実は、カーネルに umodem を組み込んでませんでした(自爆)。 そこで、umodemを組み込んだカーネルを作りなおしてみると、 /var/log/messagesには

	umodem0: YAMAHA Corporation RTA55i, rev 1.10/46.16, addr 2, iclass 2/2
	umodem0: data interface 1, has CM over data, has no break
	device_probe_and_attach: umodem0 attach returned 6
	ugen0: YAMAHA Corporation RTA55i, rev 1.10/46.16, addr 2
こんな感じ。なんか失敗してますね〜。

しゃーないんで、カーネルコンフィグファイルに

	options		UMODEM_DEBUG
追加して、これだけやと「そんなオプション知らん」って怒られるから /usr/src/sys/conf/options にも
	UMODEM_DEBUG	opt_usb.h
を追加してカーネル作りなおすと、
	umodem0: data interface 1, has CM over data, has no break
	umodem0: umodem_set_comm_feat: feature=1 failed, err=17
	umodem_attach: BAD -> DYING
	device_probe_and_attach: umodem0 attach returned 6
こんなのが。 ま、どこで umodem から ugen に落ちてるかが判明。ってことで、 /usr/src/sys/dev/usb/umodem.c を quick and dirty hack (爆)。
	*** umodem.c.2002-06-26 Mon Feb 26 13:23:08 2001
	--- umodem.c    Thu Jun 27 00:35:37 2002
	***************
	*** 318,323 ****
	--- 318,325 ----
	                err = umodem_set_comm_feature(sc, UCDC_ABSTRACT_STATE,
	                                            UCDC_DATA_MULTIPLEXED);
	+ #if 0 /* 2002-06-26 */
	                if (err)
	                        goto bad;
	+ #endif
	                sc->sc_cm_over_data = 1;
	        }
単に ugen に落とすところを #if 0 でコンディションアウトしただけ だったりします (笑)。

カーネルを作りなおしてつないでみると、

	umodem0: YAMAHA Corporation RTA55i, rev 1.10/46.16, addr 2, iclass 2/2
	umodem0: data interface 1, has CM over data, has no break
	umodem0: umodem_set_comm_feat: feature=1 failed, err=17
	umodem_attach: tty_attach 0xc0e6cc00
	umodem_attach: make_dev: umodem0
おお、なんかうまいこといったv(^^)

このあと、seyon(1) を -modem /dev/umodem0 つけて動かして、

	atz
	at@c0 ← デフォをコンソールモードに設定
	at&w  ← 設定書き込み
	at&r  ← コンソールモードへ
すると見事にコンソールモードへ移行。ばっちり:-)。 コンソールから serial ta すると、ATコマンドモードへも戻れます。

実際にseyon(1)でつなぐと以下のような感じです。

% script -a rta55i-setting.log /usr/X11R6/bin/seyon -modem /dev/umodem0 -noemulator
Script started, output file is rta55i-setting.log

Seyon Copyright (c) 1992-1993 Muhammad M. Saggaf. All rights reserved.
Version 2.1 rev. 4b i386-FreeBSD root@gohan15.freebsd.org 04/19/01 18:23:06.

Locating Modems...
>> Error: ioctl-set: Invalid argument.
>> Error: ioctl-set: Invalid argument.
>> Error: ioctl-set: Invalid argument.
Modem ``/dev/umodem0'' is Available.

Password: 

RTA55i Rev.4.06.16 (Mon Apr 15 20:23:24 2002)
  Copyright (c) 1994-2002 Yamaha Corporation.
  Copyright (c) 1998-2000 Tokyo Institute of Technology.
  Copyright (c) 2000 Japan Advanced Institute of Science and Technology, HOKURIKU.
  Copyright (c) 2002 RSA Security Inc. All rights reserved.
00:a0:de:xx:xx:xx, 00:a0:de:xx:xx:yy
Memory 8Mbytes, 2LAN, 1BRI
> show config
# RTA55i Rev.4.06.16 (Mon Apr 15 20:23:24 2002)
# MAC Address : 00:a0:de:xx:xx:xx, 00:a0:de:xx:xx:yy
# Memory 8Mbytes, 2LAN, 1BRI
serial default console
console character ascii
console lines infinity
ip lan1 address 192.168.0.1/24
ip lan1 routing protocol none
ip lan1 rip listen none
ip lan2 address 192.168.254.254/24
ip lan2 routing protocol none
ip lan2 rip listen none
ip lan2 nat descriptor 1
ip route default gateway 192.168.254.1
nat descriptor type 1 masquerade
nat descriptor timer 1 28800
nat descriptor address outer 1 192.168.254.254
nat descriptor address inner 1 192.168.0.1-192.168.0.254
nat descriptor masquerade rlogin 1 on
httpd service off
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.0.2-192.168.0.191/24
dns server 192.168.254.1
dns private address spoof on
analog supplementary-service pseudo call-waiting
analog extension dial prefix line
analog extension dial prefix sip 9#

ご質問などありましたらお気軽に