Difference between revisions of "SYSTEM INTEGRATION"

From HPSDRwiki
Jump to: navigation, search
(Ozy and Janus with Linux)
(+cat)
 
(4 intermediate revisions by one other user not shown)
Line 5: Line 5:
 
=== Loading Ozy firmware ===
 
=== Loading Ozy firmware ===
  
fxload is the standard Cypress firmware loader for modern Linux distros.   
+
fxload [[http://linux-hotplug.sourceforge.net/?selected=usb]] is the standard Cypress firmware loader for modern Linux distros.   
  
Until we getting hotplug/udev support working (see the to do list below), loading firmware with fxload requires a few manual steps.
+
Until we getting hotplug/udev support working (see the [[#To_do_list|to do list]]), loading firmware with fxload requires a few manual steps.
  
The frist step is to find your Ozy.  Do this by using the lsusb utiltiy from usbutils:  
+
The first step is to find your Ozy.  Do this by using the lsusb utility from usbutils [[http://sourceforge.net/project/showfiles.php?group_id=3581&package_id=142529]]:  
  
lsusb -d 0xfffe:0x0007
+
lsusb -d 0xfffe:0x0007
  
The bus and device number display by lsusb can be used to construct the path (/proc/bus/usb/...) to the device that libusb-programs such as fxload expect.  On my setup after a reboot, Ozy shows up on bus 4 and as device 10.  (The device number will change as devices come and go.)
+
The bus and device number displayed by lsusb can be used to construct the path (/proc/bus/usb/...) to the device that libusb-programs such as fxload expect.  On my setup after a reboot, Ozy shows up on bus 4 and as device 10.  (The device number will change as devices come and go.)
  
Given an Ozy at usb bus 4, device 10, the following will load the firmware on to the Ozy FX2:
+
Next, given an Ozy, say, at usb bus 4, device 10, invoke fxload as follows to load the firmware on to the Ozy FX2:
  
fxload -t fx2 -D /proc/bus/usb/004/010 -I ./PowerSDR-163-OzyJanus-2007May11/Release/ozyfw-sdr1k.hex
+
fxload -t fx2 -D /proc/bus/usb/004/010 -I ./PowerSDR-163-OzyJanus-2007May11/Release/ozyfw-sdr1k.hex
 +
 
 +
Of course, substitute your device location for /proc/bus/usb/004/010.
  
 
Unless you adjust the permissions on the file, you will need to run this as root (e.g. via sudo).
 
Unless you adjust the permissions on the file, you will need to run this as root (e.g. via sudo).
  
Note: after the firmware loads, the device will be renumbered.  You can find it as above -- the vendor id (0xfffe) and product id (0x0007) remain the same once the firmware is running -- although this is probably a mistake in the firmware design.
+
Note: after the firmware loads, the device will be renumbered.  You can find it at its new address by repearting the process above -- the vendor id (0xfffe) and product id (0x0007) remain the same once the firmware is running -- although this is probably a mistake in the firmware design.
  
 
=== Loading the FPGA ===
 
=== Loading the FPGA ===
  
Tbd.
+
Using KD5TFD's tools -- these are in the svn repo -- you can load everything (firmware, fpga) and configure it with the following script, based on N8VB's DOS batch file.
 +
 
 +
  #!/bin/bash -e
 +
 +
  PATH=~/src/hpsdr/repos_sdr_hpsdr/KD5TFD/OzyUtils-Linux:$PATH
 +
  RELEASE=~/src/hpsdr/PowerSDR-163-OzyJanus-2007May11/Release
 +
 +
  USB_VID=0xfffe
 +
  USB_PID=0x0007
 +
 +
  loadFW $USB_VID $USB_PID $RELEASE/ozyfw-sdr1k.hex
 +
  sleep 5
 +
 +
  loadFPGA $USB_VID $USB_PID $RELEASE/Ozy_Janus.rbf
 +
  sleep 5
 +
 +
  #        1E 00 - Reset chip
 +
  #        12 01 - set digital interface active
 +
  #        08 15 - D/A on, mic input, mic 20dB boost
 +
  #        08 14 - ditto but no mic boost
 +
  #        0C 00 - All chip power on
 +
  #        0E 02 - Slave, 16 bit, I2S
 +
  #        10 00 - 48k, Normal mode
 +
  #        0A 00 - turn D/A mute off
 +
  write_i2c $USB_VID $USB_PID 0x1a 0x1e 0x00 0x00 2
 +
  write_i2c $USB_VID $USB_PID 0x1a 0x12 0x01 0x00 2
 +
  write_i2c $USB_VID $USB_PID 0x1a 0x08 0x15 0x00 2
 +
  write_i2c $USB_VID $USB_PID 0x1a 0x0c 0x00 0x00 2
 +
  write_i2c $USB_VID $USB_PID 0x1a 0x0e 0x02 0x00 2
 +
  write_i2c $USB_VID $USB_PID 0x1a 0x10 0x00 0x00 2
 +
  write_i2c $USB_VID $USB_PID 0x1a 0x0a 0x00 0x00 2
 +
 +
  exit 0
 +
 
 +
Adjust the paths as required.
  
 
=== To do list ===
 
=== To do list ===
Line 31: Line 67:
 
This list needs to be fleshed out and triaged.
 
This list needs to be fleshed out and triaged.
  
* figure out hotplug/udev magic to make Ozy firmware load automatically
+
* figure out the hotplug/udev magic to make Ozy firmware load automagically
 
* packaging -- i can create and test a .deb for Debian and Ubuntu.  i can also rough out the rpm for RHEL4/RHEL5/Fedora, but someone else will have to test and tweak it.
 
* packaging -- i can create and test a .deb for Debian and Ubuntu.  i can also rough out the rpm for RHEL4/RHEL5/Fedora, but someone else will have to test and tweak it.
 
* build the Ozy firmware using only FOSS
 
* build the Ozy firmware using only FOSS
* experiment to see if we can get a CIL version of libusb running with Mono so that we can leverage N8VB's C# sources.
+
* experiment to see if we can get a CIL version of libusb running with Mono [[http://www.mono-project.com/Main_Page]] so that we can leverage N8VB's C# sources.
* alternatively, continue on with KD5TFD's approach, which is to rewrite the code in C/C++ with native code libusb.
+
* alternatively, continue on with KD5TFD's approach to the problem, which is to rewrite the code in C/C++ with native code lib
 +
* see if we can built the FX2 firmware using FOSS (probably sdcc [[http://sdcc.sourceforge.net/]]).
 +
 
 +
[[Category:Hardware]]

Latest revision as of 11:57, 25 January 2010

This section contains information useful in putting various pieces (modules) together to make working systems.

Ozy and Janus with Linux

Loading Ozy firmware

fxload [[1]] is the standard Cypress firmware loader for modern Linux distros.

Until we getting hotplug/udev support working (see the to do list), loading firmware with fxload requires a few manual steps.

The first step is to find your Ozy. Do this by using the lsusb utility from usbutils [[2]]:

lsusb -d 0xfffe:0x0007

The bus and device number displayed by lsusb can be used to construct the path (/proc/bus/usb/...) to the device that libusb-programs such as fxload expect. On my setup after a reboot, Ozy shows up on bus 4 and as device 10. (The device number will change as devices come and go.)

Next, given an Ozy, say, at usb bus 4, device 10, invoke fxload as follows to load the firmware on to the Ozy FX2:

fxload -t fx2 -D /proc/bus/usb/004/010 -I ./PowerSDR-163-OzyJanus-2007May11/Release/ozyfw-sdr1k.hex

Of course, substitute your device location for /proc/bus/usb/004/010.

Unless you adjust the permissions on the file, you will need to run this as root (e.g. via sudo).

Note: after the firmware loads, the device will be renumbered. You can find it at its new address by repearting the process above -- the vendor id (0xfffe) and product id (0x0007) remain the same once the firmware is running -- although this is probably a mistake in the firmware design.

Loading the FPGA

Using KD5TFD's tools -- these are in the svn repo -- you can load everything (firmware, fpga) and configure it with the following script, based on N8VB's DOS batch file.

 #!/bin/bash -e

 PATH=~/src/hpsdr/repos_sdr_hpsdr/KD5TFD/OzyUtils-Linux:$PATH
 RELEASE=~/src/hpsdr/PowerSDR-163-OzyJanus-2007May11/Release

 USB_VID=0xfffe
 USB_PID=0x0007

 loadFW $USB_VID $USB_PID $RELEASE/ozyfw-sdr1k.hex
 sleep 5

 loadFPGA $USB_VID $USB_PID $RELEASE/Ozy_Janus.rbf
 sleep 5

 #        1E 00 - Reset chip
 #        12 01 - set digital interface active
 #        08 15 - D/A on, mic input, mic 20dB boost
 #        08 14 - ditto but no mic boost
 #        0C 00 - All chip power on
 #        0E 02 - Slave, 16 bit, I2S
 #        10 00 - 48k, Normal mode
 #        0A 00 - turn D/A mute off
 write_i2c $USB_VID $USB_PID 0x1a 0x1e 0x00 0x00 2
 write_i2c $USB_VID $USB_PID 0x1a 0x12 0x01 0x00 2
 write_i2c $USB_VID $USB_PID 0x1a 0x08 0x15 0x00 2
 write_i2c $USB_VID $USB_PID 0x1a 0x0c 0x00 0x00 2
 write_i2c $USB_VID $USB_PID 0x1a 0x0e 0x02 0x00 2
 write_i2c $USB_VID $USB_PID 0x1a 0x10 0x00 0x00 2
 write_i2c $USB_VID $USB_PID 0x1a 0x0a 0x00 0x00 2

 exit 0

Adjust the paths as required.

To do list

This list needs to be fleshed out and triaged.

  • figure out the hotplug/udev magic to make Ozy firmware load automagically
  • packaging -- i can create and test a .deb for Debian and Ubuntu. i can also rough out the rpm for RHEL4/RHEL5/Fedora, but someone else will have to test and tweak it.
  • build the Ozy firmware using only FOSS
  • experiment to see if we can get a CIL version of libusb running with Mono [[3]] so that we can leverage N8VB's C# sources.
  • alternatively, continue on with KD5TFD's approach to the problem, which is to rewrite the code in C/C++ with native code lib
  • see if we can built the FX2 firmware using FOSS (probably sdcc [[4]]).