Getting BT747 running under Fedora11_64

Bild von neilbryant

Summary is at the end, but here's the process I went through, in case others are searching: I have a BT757 (the solar one). I'm trying to get it to run under Fedora (2.6.30.5-43.fc11.x86_64). 64-bit, dual-core Intel. I'm running JRE version: 6.0-b16 Java VM: OpenJDK 64-Bit Server VM (14.0-b16 mixed mode linux-amd64 ) At first, I can't get any connection. I look around and find some of the issues connecting to the device. I figure out how to add /dev/ttyACM0. I wind up not using it, but here are the instructions for Fedora11, anyhow:

-------------------------------------------------------- Current versions of Linux use udev to handle dynamic device creation. With Fedora, the rules files are managed under /etc/udev/rules.d/ and the Holux is already listed. $ sudo nano /etc/udev/rules.d/99-gpsd.rules // this entry is at the bottom my my gpsd rules # Cygnal Integrated Products, Inc. CP210x Composite Device (Used by Holux m241) SYSFS{idVendor}=="10c4", SYSFS{idProduct}=="ea60", SYMLINK="gps%n", RUN+="/lib/udev/gpsd.hotplug.wrapper" // I added this rule to add the ttyACM0 link # Cygnal Integrated Products, Inc. CP210x Composite Device (Used by iBlue BT757) # attempting to fix BT747 ~NEB SYSFS{idVendor}=="10c4", SYSFS{idProduct}=="ea60", SYMLINK+="ttyACM0", RUN+="/lib/udev/gpsd.hotplug.wrapper" since the rules are the same, we could just modify the Holux rule, to create both symlinks: SYMLINK="gps%n ttyACM0" Or, we could add options to the second rule to handle permissions on the new symlink. GROUP="wheel", OWNER="me", MODE="0777" // Then reload the rules $ sudo udevadm control --reload-rules -------------------------------------------------------- After some digging, I add myself to 'dialout' group, as that group owns ttyUSB0. I could run either of the following commands as myself, and see the streaming output from the BT757: cat /dev/gps0 cat /dev/ttyUSB0 I then was recieving gnu.io.NoSuchPortException errors. After setting the debug option (I was using the wrong one at first), I see it is hanging upon trying to read /dev/ttyUSB-1 (which does not exist). I find an appropriate forum post, and discover the drop box is editable, so I change it to /dev/ttyUSB0. Java seg-faults when I try to run the app; # Problematic frame: # C [librxtxSerial.so+0x6462] read_byte_array+0x52 I try running BT747 with the pre-release of RxTx (rxtx 2.2pre2) listed in that post, which sorts out the segfault. (I have the hs_err log, if it's helpful.) I'm still getting nothing. One of the forum posts discusses slowing down the connection, so I set chunk size to 1024, and set speed to 38400. Running as root, and duplicating those settings, I can now connect. Then I attempt to download, and nothing happens. No progress bar, no messages. I go see a movie downtown. Matt Damon is improving with age. When I get back, I have the following message entries: 697751 - Writing settings success for /root/BT747SettingsJ2SE.pdb java.io.IOException: Input/output error in nativeavailable at gnu.io.RXTXPort.nativeavailable(Native Method) at gnu.io.RXTXPort$SerialInputStream.available(RXTXPort.java:1596) at gps.connection.GPSRxTxPort.readCheck(Unknown Source) at gps.connection.GPSrxtx$Buffer.refillBuffer(Unknown Source) at gps.connection.GPSrxtx$Buffer.isReadBufferEmpty(Unknown Source) at gps.connection.GPSrxtx.isReadBufferEmpty(Unknown Source) at gps.connection.NMEADecoderState.getResponse(Unknown Source) at gps.connection.GPSrxtx.getResponse(Unknown Source) at gps.mvc.GPSLinkHandler.getResponse(Unknown Source) at gps.mvc.Controller.run(Unknown Source) at net.sf.bt747.j2se.system.J2SEThread.run(Unknown Source) at java.lang.Thread.run(Thread.java:636) java.io.IOException: Input/output error in writeArray at gnu.io.RXTXPort.writeArray(Native Method) at gnu.io.RXTXPort$SerialOutputStream.write(RXTXPort.java:1171) at gps.connection.GPSRxTxPort.write(Unknown Source) at gps.connection.GPSRxTxPort.write(Unknown Source) at gps.connection.GPSrxtx.write(Unknown Source) at gps.connection.NMEAWriter.sendPacket(Unknown Source) at gps.mvc.GPSLinkHandler.doSendCmd(Unknown Source) at gps.mvc.GPSLinkHandler.sendCmd(Unknown Source) at gps.mvc.MtkController.sendCmd(Unknown Source) at gps.mvc.MTKLogDownloadHandler.readLog(Unknown Source) at gps.mvc.MTKLogDownloadHandler.getNextLogPart(Unknown Source) at gps.mvc.MTKLogDownloadHandler.notifyRun(Unknown Source) at gps.mvc.MtkController.notifyRun(Unknown Source) at gps.mvc.Controller.run(Unknown Source) at net.sf.bt747.j2se.system.J2SEThread.run(Unknown Source) at java.lang.Thread.run(Thread.java:636) The two occur intermittently for a while, then it's a series of the first block. If I try to launch as user, I get a lockfile error, so I follow the Macintosh instruction: $ sudo chmod 777 /var/lock Now I can launch as user. It won't open /dev/gps0 (probably because it's owned by root), but it sees /dev/ttyUSB0, so I don't need it. Change to that port, and I get: 337989 - Port opened 338028 - >PMTK182,2,6 true 338029 - #HOLUX241,5 338030 - #PMTK607 Adding gps.mvc.Controller@7bb03ee 338036 - Attempting saving settings to /home/nbryant/BT747SettingsJ2SE.pdb 338085 - #HOLUX241,5 338088 - #PMTK490 338088 - #PMTK414 338088 - #PMTK182,2,6 ... 338087 - Writing settings success for /home/nbryant/BT747SettingsJ2SE.pdb 338535 - >HOLUX241,5 true 338567 - >PMTK607 true 338599 - >HOLUX241,5 true 338631 - >PMTK490 true 338664 - >PMTK414 true Timeout: 342673-338664>4000 342674 - No ack:PMTK182,2,6 342674 - No ack:PMTK607 342675 - No ack:PMTK490 342675 - No ack:PMTK414 Changed the speed to 115200, as per here. Success =] Changed the chunks back to 1024/3; downloads about 750 records in about 10 seconds. I'll set that back to normal, as I go. So it looks like the total changes amounted to:

  • add myself to 'dialout' group
  • $ sudo chmod 777 /var/lock
  • point BT747 at /dev/ttyUSB0
  • Use the Prerelease Version