"pl2303.o" まず始めに素直に、つないだ。lsmodしてみるも変化なし。 残念ながら認めてもらえない。 dmesg で調べると、こうある。 hub.c: USB new device connect on bus1, assigned device number 2 usb.c: kmalloc IF c3daac00, numif 1 usb.c: new device strings: Mfr=1, Product=2, SerialNumber=0 usb.c: USB device number 2 default language ID 0x409 Manufacturer: Prolific Technology Inc. Product: USB-Serial Controller usb.c: unhandled interfaces on device usb.c: USB device 2 (vend/prod 0x4bb/0xa0e) is not claimed by any active driver. Length = 18 DescriptorType = 01 USB version = 1.10 Vendor:Product = 04bb:0a0e MaxPacketSize0 = 64 NumConfigurations = 1 Device version = 0.01 Device Class:SubClass:Protocol = 00:00:00 Per-interface classes Configuration: bLength = 9 bDescriptorType = 02 wTotalLength = 0027 bNumInterfaces = 01 bConfigurationValue = 01 iConfiguration = 00 bmAttributes = 80 MaxPower = 100mA Interface: 0 Alternate Setting: 0 bLength = 9 bDescriptorType = 04 bInterfaceNumber = 00 bAlternateSetting = 00 bNumEndpoints = 03 bInterface Class:SubClass:Protocol = ff:00:00 iInterface = 00 Endpoint: bLength = 7 bDescriptorType = 05 bEndpointAddress = 81 (in) bmAttributes = 03 (Interrupt) wMaxPacketSize = 000a bInterval = 01 Endpoint: bLength = 7 というわけで、またコンパイルをしなくちゃ。 いじるのは /usr/src/linux/drivers/usb/serial/usbserial.c と思ったけど、これではなかった。いじるのは /usr/src/linux/drivers/usb/serial/pl2303.c にした。というのは dmesgの中にManufacturer: Prolific Technology Inc.を発見。 チップがPL2303らしいだからだ。 これを次のようにRSAQ5を追加する。 /usr/src/linux/drivers/usb/serial/pl2303.c static struct usb_device_id id_table [] = { { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID) }, { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_RSAQ2) }, { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID) }, #define IODATA_PRODUCT_ID_RSAQ5 0x0a0e { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID_RSAQ5) }, { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID) }, { USB_DEVICE(ELCOM_VENDOR_ID, ELCOM_PRODUCT_ID) }, { USB_DEVICE(ITEGNO_VENDOR_ID, ITEGNO_PRODUCT_ID) }, { USB_DEVICE(MA620_VENDOR_ID, MA620_PRODUCT_ID) }, { } /* Terminating entry */ }; あああ、じつは /usr/src/linux/.configを見たら # CONFIG_USB_SERIAL is not set となってた。失敗、失敗。ここは make menuconfig で CONFIG_USB_SERIAL=m CONFIG_USB_SERIAL_GENERIC=y CONFIG_USB_SERIAL_PL2303=m にしておかなきゃ。 でき上がった pl2303.c を /lib/modules/2.4.20/kernel/drivers/usb/serial/ に入れる。 % ls してみたら pl2303.o suntac_ucablep.o usbserial.o と出た。そうだ、 keyspan社のUSBシリアルもたしかあったから、それのモジュールも 次回にはいれておくか。 そうしてから、 # depmod -a をして終了。 つながったら /deb/ttyUSB0 として認識されるハズ。 使い方は、このRSAQ5をリナザウに挿す。lsmodするとpl2303とusbserialの モジュールが追加されたのがわかる。 実験をしてみました。家には懐かしのRS232Cで動くようなものがほとんど無い。 そうだOpenBlokS(White)にはシリアル(/dev/ttyS0)が出てた。 これに接続して、ちゃんと文字が出力されるか試してみよう。 やわら、家中を探し、OpenBlockS(RJ-45 style)-Serialのケーブル(付属品) を見つけ、つなげ、 そしてリナザウでは、 % jerm -b 9600 /dev/ttyUSB0 して待機。OpenBlockS(totoro)をリブート。 おおおお、メッセージが出てきた。ちゃんとつながってる。しかも おまけ、OpenBlockSがブートするときのメッセージも手に入った。 こんなメッセージです。(かなり長い) シャットダウンからブートアップまでです。しかし、login:のあと 打てない。これはどっちが悪い? bash-2.05# jerm -b9600 /dev/ttyUSB0 Jerminal v0.8095 Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 candy Type "Ctrl-M ~ ." to exit. ispeed 13 ospeed 13 -IGNBRK -BRKINT -IGNPAR -PARMRK -INPCK -ISTRIP -INLCR -IGNCR -ICRNL -IXON -IXOFF -IXANY -IMAXBEL -OPOST +ONLCR -TABDLY cs8 -CSTOPB +CREAD -PARENB -PARODD +HUPCL +CLOCAL -CRTSCTS +ECHOKE +ECHOE -ECHO -ECHONL -ECHOPRT +ECHOCTL -ISIG -ICANON -IEXTEN -TOSTOP -FLUSHO -PENDIN -NOFLSH INUnmounting remote filesystems... Sending all pr[psw_ioctl] unblocked ocesses the TERM[psw_ioctl] sig signal... [psw_release] by pid 104 Sending all processes the KILL signal... Deactivating swap partitions... Saving random seed to a temporary file... Saving the system time to hardware clock... Remounting root filesystem read-only... Unmounting local filesystems... Flushing filesystem buffers... Please stand by while rebooting... flushing ide devices: hda Restarting system.405GPr 1.2 ROM Monitor (5/25/02) OBS266 1.3 --------------------- System Info ---------------------- Processor = 405GPr (New mode), PVR: 50910951 CPU speed = 266 MHz PLB speed = 133 MHz OPB speed = 66 MHz EBC speed = 66 MHz PCI Bus speed = 33 MHz (Async) VCO speed = 800 MHz Feedback Clock = CPU Amount of SDRAM = 64 MBytes Internal PCI arbiter enabled -------------------------------------------------------- --- Device Configuration --- Power-On Test Devices: 000 Enabled System Memory [RAM] 002 Enabled Ethernet [ENET] 003 Enabled PCI Ethernet [PCIENET] ---------------------------- Boot Sources: 001 Enabled System FLASH [FLASH] 002 Enabled Ethernet [ENET] LOCAL: 0.0.0.0 REMOTE: 255.255.255.255 MAC: 000A8501xxxx 004 Enabled Serial Port 1 [S1] Baud = 9600 ---------------------------- Debugger: Disabled ---------------------------- -- Automatic Boot -- Booting from [FLASH] System FLASH ... loaded at: 00500000 00BA2234 relocated to: 00400000 00AA2234 board data at: 00A9F15C 00A9F1A4 relocated to: 00405600 00405648 zimage at: 00405B3F 00509B9C initrd at: 0050A000 00A9EE1F avail ram: 00AA3000 04000000 Linux/PPC load: root=/dev/hda1 Uncompressing Linux...done. Now booting the kernel Linux version 2.4.26 (root@todo91) (gcc version 3.3.4) #3 Wed Jan 19 08:32:10 JST 2005 OpenBlockS port On node 0 totalpages: 16384 zone(0): 16384 pages. zone(1): 0 pages. zone(2): 0 pages. Kernel command line: root=/dev/hda1 Calibrating delay loop... 266.24 BogoMIPS Memory: 56608k available (1700k kernel code, 636k data, 80k init, 0k highmem) Dentry cache hash table entries: 8192 (order: 4, 65536 bytes) Inode cache hash table entries: 4096 (order: 3, 32768 bytes) Mount cache hash table entries: 512 (order: 0, 4096 bytes) Buffer cache hash table entries: 4096 (order: 2, 16384 bytes) Page-cache hash table entries: 16384 (order: 4, 65536 bytes) POSIX conformance testing by UNIFIX PCI: Probing PCI hardware Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket Starting kswapd Journalled Block Device driver loaded i2c-core.o: i2c core module version 2.6.1 (20010830) pty: 256 Unix98 ptys configured Serial driver version 5.05c (2001-07-08) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabled ttyS00 at 0xef600300 (irq = 0) is a 16550A ttyS01 at 0xef600400 (irq = 1) is a 16550A HDLC line discipline: version $Revision: 3.7 $, maxframe=4096 N_HDLC line discipline registered. X1226: I2C based RTC driver. LARGEEEPROM: I2C based EEPROM driver. Push switch driver v0.01 [psw_init] Push switch installed on interrupt 26 OBS_LED driver version 0.01 OBS_LED driver version 0.01 GPIO at 0xc5000700 RAMDISK driver initialized: 16 RAM disks of 90112K size 1024 blocksize loop: loaded (max 8 devices) emac: IBM OCP EMAC Ethernet driver, version 2.0 Maintained by Benjamin Herrenschmidt OBS_LED driver version 0.01 GPIO at 0xc5002700 OBS_LED driver version 0.01 GPIO at 0xc5004700 mal0: Initialized, 2 tx channels, 1 rx channels eth0: IBM emac, MAC 00:0a:85:01:xx:xx eth0: Found Generic MII PHY (0x00) Linux Tulip driver version 0.9.15-pre12 (Aug 9, 2002) tulip0: MII transceiver #1 config 1000 status 782d advertising 01e1. eth1: Davicom DM9102/DM9102A rev 64 at 0xfd00, 00:0A:85:01:xx:xx, IRQ 31. PPP generic driver version 2.4.2 PPP Deflate Compression module registered PPP BSD Compression module registered Universal TUN/TAP device driver 1.5 (C)1999-2002 Maxim Krasnyansky Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4 ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx HPT371: IDE controller at PCI slot 00:03.0 HPT371: chipset revision 2 HPT371: not 100% native mode: will probe irqs later HPT37X: using 33MHz PCI clock ide0: BM-DMA at 0xfe08-0xfe0f, BIOS settings: hda:pio, hdb:pio hda: SAMSUNG MP0402H, ATA DISK drive blk: queue c02541d8, I/O limit 4095Mb (mask 0xffffffff) ide0 at 0xffe8-0xffef,0xffe6 on irq 30 hda: attached ide-disk driver. hda: host protected area => 1 hda: 78242976 sectors (40060 MB) w/8192KiB Cache, CHS=4870/255/63, UDMA(100) Partition check: hda: hda1 hda2 hda3 hda4 redwood: flash mapping: 800000 at ff800000 Amd/Fujitsu Extended Query Table v1.3 at 0x0040 number of CFI chips: 1 cfi_cmdset_0002: Disabling fast programming due to code brokenness. Creating 4 MTD partitions on "IBM Redwood": 0x00000000-0x00010000 : "OpenBlockS Configuration Data" 0x00010000-0x007c0000 : "OpenBlockS Boot Image" 0x007c0000-0x00800000 : "OpenBlockS OpenBIOS" 0x00000000-0x00800000 : "OpenBlockS All Flash" rtc: unable to get misc minor usb.c: registered new driver usbdevfs usb.c: registered new driver hub Linux video capture interface: v1.00 IBM On-chip iic (i2c) algorithm module 2002.30.04 IBM IIC driver v2.0 ibm-iic: using compatibility value for OPB freq, fix your board specific setup X1226: found X1226 on IBM IIC Serial EEPROM FOUND at 57 Serial EEPROM FOUND at 51 ibm-iic0: using standard (100 kHz) mode OBS_LED driver version 0.01 GPIO at 0xc5814700 Initializing Cryptographic API NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP, IGMP IP: routing cache hash table of 512 buckets, 4Kbytes TCP: Hash tables configured (established 4096 bind 8192) IPv4 over IPv4 tunneling driver ip_conntrack version 2.1 (512 buckets, 4096 max) - 288 bytes per conntrack ip_tables: (C) 2000-2002 Netfilter core team ipt_recent v0.3.1: Stephen Frost . http://snowman.net/projects/ipt_recent/ arp_tables: (C) 2002 David S. Miller NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. RAMDISK: Compressed image found at block 0 Freeing initrd memory: 5715k freed VFS: Mounted root (ext2 filesystem). VFS: Mounted root (ext2 filesystem) readonly. Trying to move old root to /initrd ... failed Unmounting old root Trying to free ramdisk memory ... okay [prepare_namespace] Executing flashcfg... [prepare_namespace] Finished executing flashcfg Freeing unused kernel memory: 80k init INIT: version 2.85 booting fsck 1.35 (28-Feb-2004) /dev/hda1: clean, 38988/2011296 files, 278715/4016242 blocks (check after next mount) /dev/hda3: clean, 862/1387200 files, 891522/2773220 blocks (check after next mount) /dev/hda4: clean, 34869/1324512 files, 513486/2646708 blocks (check after next mount) /dev/hda1 on / type ext2 (rw) none on /proc type proc (rw) none on /dev/pts type devpts (rw,gid=4,mode=620) /dev/hda3 on /ext1 type ext2 (rw) /dev/hda4 on /home2 type ext2 (rw) Adding Swap: 1373548k swap-space (priority -1) INIT: Entering runlevel: 2 starting network processing openblocks settings: openblocks settings done. hostname: totoro configuring network interfaces: eth0 eth1. adding interface aliases: SIOCADDRT: No such device SIOCADDRT: No such device processing openblocks settings: openblocks settings done. starting pshd starting system [psw_ioctl] PSWIOC_WAITPUSH pid 104 logger portmapstarting name server Setting date via ntp. 6 Jun 16:46:50 ntpdate[118]: no server suitable for synchronization found . . creating runtime link editor directory cache. clearing /tmp updating motd. standard daemons: update cron. starting network daemons: ntpd sshd dhcpd inetd. starting local daemons:. starting OpenBlockS daemons: httpd:880. starting runled Wed Jun 6 16:46:54 2007 : Info: Starting - reading configuration files ... postfixpostfix/postfix-script: starting the Postfix mail system Wed Jun 6 16:47:21 JST 2[psw_ioctl] unblocked [psw_ioctl] sig [psw_ioctl] PSWIOC_WAITPUSH pid 104 totoro login: