OEM4 & OEMV USB Driver for Linux

While NovAtel does not officially support USB drivers under the Linux O/S, 
we have determined the following step by step procedure to set up a Linux host to talk to OEM4 & OEMV via USB: 

Disconnect USB cable from OEM4/OEMV or power it off first. 

For kernel 2.4.21 (or any 2.4 kernels) you might try the following as root: 

mknod /dev/ttyUSB0 c 188 0 
mknod /dev/ttyUSB1 c 188 1 
mknod /dev/ttyUSB2 c 188 2 

mount -t usbdevfs none /proc/bus/usb 
cd /bin/modules/2.4.21/kernel/drivers/usb/serial 
/sbin/insmod usbserial.o vendor=0x09d7 product=0x0100 
/sbin/lsmod # usbserial should show up in the list of loaded kernel modules 

Power on the OEM4/OEMV or reconnect the USB cable 

cat /proc/bus/usb/devices # you should now see NovAtel's OEMV in the list 

minicom -c on USB0 # connects to first bulk end point 

(If you want to monitor USB, among other things, bring up another xterm shell and type: /usr/bin/tail -f /var/log/messages) 

For kernel 2.6 with the udev system, one can add the following to say: 

/etc/udev/rules.d/z90_novatel.rules to automatically load the driver 
and create links to /dev/gps0 /dev/gps1 /dev/gps2 for ttyUSB0 ttyUSB1 
ttyUSB2 respectively upon insertion of the USB cable into the machine: 

SUBSYSTEM=="usb", SYSFS{idProduct}=="0100", SYSFS{idVendor}=="09d7", 
PROGRAM="/sbin/modprobe usbserial vendor=0x09d7 product=0x0100" 

BUS=="usb", SYSFS{idProduct}=="0100", SYSFS{idVendor}=="09d7", 
SYSFS{product}=="NovAtel GPS Receiver", SYSFS{manufacturer}=="NovAtel 
Inc.", SYMLINK+="gps%n" 


This is much easier to debug when it is compiled as a kernel module and loaded as such. This way, the parameters can be passed in when loading the usbserial module. The parameters MUST be set to: 

vendor=0x09d7 product=0x0100 

or USB on OEM4/OEMV will NOT be recognized. 

usbserial.c must be modified to add our vendor, product information prior to kernel compile. 

PC root hub = UHCI 

USB cable = Standard USB 1.1 cable 

Also, one of our customers succeeded loading the USB driver using Linux (2.6.9) with a small change to the way usbserial.ko moduel is loaded. 

If you use /sbin/modprobe instead of /sbin/insmod, it is not necessary to change the directory where the correct version is installed. 

mknod /dev/ttyUSB0 c 188 0 
mknod /dev/ttyUSB1 c 188 1 
mknod /dev/ttyUSB2 c 188 2 
mount -t usbdevfs none /proc/bus/usb 
/sbin/modprobe usbserial vendor=0x09d7 product=0x0100 

To log binary data using Linux USB, NovAtel recommends to select one of RedHat, SUSE, Fedora (based on RedHat), or Debian Linux distributions. 

While the above distributions are recommended, there is no direct support for integrating Linux with our receivers.