
Ubuntu日本語フォーラム

ログインしていません。
お世話になっております。
私は機械工作関係の仕事をしております。
数年前、javaのシリアル通信用の拡張API(http://users.frii.com/jarvi/rxtx/)を見つけたのをきっかけに、javaでPCとNC放電加工機との間でNCコードをやりとりするためのアプリケーションを自作して使っておりました。
私の使っているノートPC(東芝 DynaBook Satellite PS1801AP568A)ではWindows XPとPlamo linux4.01をデュアルインストールしていましたが、先日Plamoをやめてubuntu7.04をインストールしました。
ubuntuはとても快適なのですが、PlamoとXPでは問題なく使えていた自作シリアル通信プログラムがubuntuで動作しないことに気付きました。
よくよく調べてみるとシリアル通信用のポートが取得できないようで、どうもシリアルポートの設定がされてないようです。setserialパッケージをインストールしてみましたが使い方がどうも分かりません。
どなたか詳しい方がいましたらご教授いただけないでしょうか?
よろしくお願いいたします。
参考までに使用可能なポート名を表示するプログラム(showPortList.java)を載せておきます。
import java.util.*;
import java.io.*;
import gnu.io.*;
public class showPortList
{
public static void main(String[] args)
{
System.out.println("==使用可能なポート==");
Enumeration list
= CommPortIdentifier.getPortIdentifiers();
while(list.hasMoreElements())
{
CommPortIdentifier PID
= (CommPortIdentifier)list.nextElement();
System.out.println("port="+PID.getName());
}
}
}コンパイルおよび実行にはlibrxtx-javaをインストールする必要があります。
sudo apt-get install librxtx-java
でインストールできます。
コンパイルは
javac -classpath /usr/share/java/RXTXcomm.jar showPortList.java
実行は
java -Djava.library.path=/usr/lib -classpath .:/usr/share/java/RXTXcomm.jar showPortList
ちなみに別のubuntuマシーンで実行すると
==使用可能なポート==
Experimental: JNI_OnLoad called.
Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version = RXTX-2.1-7
port=/dev/ttyS0
となり、ちゃんとポートが取得できてます。
オフライン
$ java -Djava.library.path=/usr/lib -classpath .:/usr/share/java/RXTXcomm.jar showPortList
==使用可能なポート==
Experimental: JNI_OnLoad called.
Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version = RXTX-2.1-7
port=/dev/ttyS0
javaは、全く解かりませんが、問題なさそうです
環境
ハード: マザーボード Asus P5B-E Plus
OS: Ubuntu7.04最新アップデート適用済み
$ uname -r
2.6.20-16-generic
Java: $ sudo apt-get install sun-java5-jdk librxtx-java
Bios: comポートdisableでしたので、再起動しenableにし、ポートアドレス設定
オフライン
setserial以前で転んでいるような気がします。
それらしいことが何も分からない可能性もあるので申し訳ないのですが、
以下でシリアル周りのハードウェア認識を見るとどうなっているでしょうか?
$ cat /var/log/dmesg | grep ttyS
$ sudo lspci -vv
オフライン
siさん、hitoさんレスありがとうございます。
とりあえずBIOSの設定は弄ってないので大丈夫な筈だと思います(自信ないですが…)。
別のマシンではsetserialとかインストールしてなくても全然問題ないようなので、hitoさんの仰るとおりsetserial以前の問題なのかもしれません。
dmesg、lspci、setserialの出力結果は以下の通りです。
$ dmesg | grep ttyS
[ 21.133181] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 21.135614] 00:0a: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 81.976000] ttyS0: LSR safety check engaged!
[ 81.976000] ttyS0: LSR safety check engaged!
[ 81.980000] ttyS0: LSR safety check engaged!
[ 91.796000] ttyS0: LSR safety check engaged!
[ 3522.424000] ttyS0: LSR safety check engaged!
[ 3522.516000] ttyS0: LSR safety check engaged!
[ 3618.948000] ttyS0: LSR safety check engaged!
[ 3619.148000] ttyS0: LSR safety check engaged!
[ 3660.960000] ttyS0: LSR safety check engaged!
[ 3661.156000] ttyS0: LSR safety check engaged!
[ 3673.832000] ttyS0: LSR safety check engaged!
[ 3674.092000] ttyS0: LSR safety check engaged!
[ 4146.920000] ttyS0: LSR safety check engaged!
[ 4147.156000] ttyS0: LSR safety check engaged!
[ 4431.108000] ttyS0: LSR safety check engaged!
[ 4431.308000] ttyS0: LSR safety check engaged!
[ 7191.100000] ttyS0: LSR safety check engaged!
[ 7191.172000] ttyS0: LSR safety check engaged!
[ 7723.752000] ttyS0: LSR safety check engaged!
[ 7724.004000] ttyS0: LSR safety check engaged!
[12828.264000] ttyS0: LSR safety check engaged!
[12857.336000] ttyS0: LSR safety check engaged!
[13081.148000] ttyS0: LSR safety check engaged!
[16227.332000] ttyS0: LSR safety check engaged!
[16227.528000] ttyS0: LSR safety check engaged!
[16254.520000] ttyS0: LSR safety check engaged!
[16254.628000] ttyS0: LSR safety check engaged!
[24194.772000] ttyS0: LSR safety check engaged!
$ sudo lspci -vv
00:00.0 Host bridge: ALi Corporation M1644/M1644T Northbridge+Trident (rev 01)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR+
Latency: 0
Region 0: Memory at f0000000 (32-bit, prefetchable) [size=64M]
Capabilities: [b0] AGP version 2.0
Status: RQ=28 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3- Rate=x1,x2,x4
Command: RQ=1 ArqSz=0 Cal=0 SBA- AGP- GART64- 64bit- FW- Rate=<none>
Capabilities: [a4] Power Management version 1
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:01.0 PCI bridge: ALi Corporation PCI to AGP Controller (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
Memory behind bridge: f7f00000-fdffffff
Prefetchable memory behind bridge: 30000000-300fffff
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR+
BridgeCtl: Parity- SERR- NoISA- VGA+ MAbort- >Reset- FastB2B-
00:02.0 USB Controller: ALi Corporation USB 1.1 Controller (rev 03) (prog-if 10 [OHCI])
Subsystem: Toshiba America Info Systems Unknown device 0004
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 64 (20000ns max), Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 11
Region 0: Memory at f7eff000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [60] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:04.0 IDE interface: ALi Corporation M5229 IDE (rev c3) (prog-if f0)
Subsystem: Toshiba America Info Systems Unknown device 0004
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 64 (500ns min, 1000ns max)
Interrupt: pin A routed to IRQ 255
Region 0: [virtual] Memory at 000001f0 (32-bit, non-prefetchable) [disabled] [size=8]
Region 1: [virtual] Memory at 000003f0 (type 3, non-prefetchable) [disabled] [size=1]
Region 2: [virtual] Memory at 00000170 (32-bit, non-prefetchable) [disabled] [size=8]
Region 3: [virtual] Memory at 00000370 (type 3, non-prefetchable) [disabled] [size=1]
Region 4: I/O ports at eff0 [size=16]
Capabilities: [60] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:06.0 Multimedia audio controller: ALi Corporation M5451 PCI AC-Link Controller Audio Device (rev 01)
Subsystem: Toshiba America Info Systems Unknown device 0001
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR+ <PERR+
Latency: 64 (500ns min, 6000ns max)
Interrupt: pin A routed to IRQ 11
Region 0: I/O ports at 1000 [size=256]
Region 1: Memory at 30100000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:07.0 ISA bridge: ALi Corporation M1533/M1535 PCI to ISA Bridge [Aladdin IV/V/V+]
Subsystem: Toshiba America Info Systems Unknown device 0004
Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
Capabilities: [a0] Power Management version 1
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:08.0 Bridge: ALi Corporation M7101 Power Management Controller [PMU]
Subsystem: Toshiba America Info Systems Unknown device 0001
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
00:0a.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 0d)
Subsystem: Toshiba America Info Systems 8255x-based Ethernet Adapter (10/100)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 64 (2000ns min, 14000ns max), Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 11
Region 0: Memory at f7efe000 (32-bit, non-prefetchable) [size=4K]
Region 1: I/O ports at ef40 [size=64]
Region 2: Memory at f7ec0000 (32-bit, non-prefetchable) [size=128K]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=2 PME-
00:11.0 CardBus bridge: Toshiba America Info Systems ToPIC100 PCI to Cardbus Bridge with ZV Support (rev 32)
Subsystem: Toshiba America Info Systems Unknown device 0001
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 168
Interrupt: pin A routed to IRQ 11
Region 0: Memory at 30101000 (32-bit, non-prefetchable) [size=4K]
Bus: primary=00, secondary=02, subordinate=05, sec-latency=0
Memory window 0: 20000000-23fff000 (prefetchable)
Memory window 1: 24000000-27fff000
I/O window 0: 00001400-000014ff
I/O window 1: 00001800-000018ff
BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset- 16bInt+ PostWrite+
16-bit legacy interface ports at 0001
00:11.1 CardBus bridge: Toshiba America Info Systems ToPIC100 PCI to Cardbus Bridge with ZV Support (rev 32)
Subsystem: Toshiba America Info Systems Unknown device 0001
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 168
Interrupt: pin B routed to IRQ 11
Region 0: Memory at 30102000 (32-bit, non-prefetchable) [size=4K]
Bus: primary=00, secondary=06, subordinate=09, sec-latency=0
Memory window 0: 28000000-2bfff000 (prefetchable)
Memory window 1: 2c000000-2ffff000
I/O window 0: 00001c00-00001cff
I/O window 1: 00002000-000020ff
BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset- 16bInt+ PostWrite+
16-bit legacy interface ports at 0001
01:00.0 VGA compatible controller: Trident Microsystems CyberBlade XPAi1 (rev 82) (prog-if 00 [VGA])
Subsystem: Toshiba America Info Systems Unknown device 0001
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 8
Interrupt: pin A routed to IRQ 11
Region 0: Memory at fc000000 (32-bit, non-prefetchable) [size=32M]
Region 1: Memory at fbc00000 (32-bit, non-prefetchable) [size=4M]
Region 2: Memory at f8000000 (32-bit, non-prefetchable) [size=32M]
Region 3: Memory at f7ff8000 (32-bit, non-prefetchable) [size=32K]
[virtual] Expansion ROM at 30000000 [disabled] [size=64K]
Capabilities: [80] AGP version 2.0
Status: RQ=33 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3- Rate=x1,x2,x4
Command: RQ=1 ArqSz=0 Cal=0 SBA- AGP- GART64- 64bit- FW- Rate=<none>
Capabilities: [90] Power Management version 2
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
$ setserial -g /dev/ttyS*
/dev/ttyS0: No such device
/dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
ちなみに、恥ずかしながら私のレベルは、「IRQって?? アイルランド解放戦線?」という程度なのでこの結果を見ても/dev/ttyS0が×な事位しか分からず、どうすればいいかまったく分からないです。すみません。アドバイスよろしくお願いいたします。
最後の編集者: mumu (2007-07-13 16:06:33)
オフライン
たぶん、
https://answers.launchpad.net/ubuntu/+question/2622
と同じ問題です。
Kernelレベルで何かを踏んでいるのですが、それが何かはわかりません。
簡単には直らない問題なのですが、BIOSで不要なパラレルポートとか
Serial2とかを無効にすると解決したりしないでしょうか(Serial1は
有効のまま)。
オフライン
hitoさん、情報いろいろありがとうございます。
私のノートPCではSerial2というのはありませんが、Pararelを無効にしてみたり、
SerialをCOM2、COM3、COM4と変えてみたりしましたがダメでした..orz
教えていただいた
https://answers.launchpad.net/ubuntu/+question/2622
の中で、dapperのCDからブートした場合は使えたと書いてありますね。
Plamo(kernel-2.4.27)のときは問題無しだったんで、私のもカーネルのバグ
なんでしょうかね〜?
連休明けに再チャレンジしてみます。
オフライン