SDR-1000 USB adapter - 2018

UPDATED!


In 2018, the FlexRadio SDR-1000, circa 2003, is somewhat of a boatanchor. Despite having a very straightforward design, available schematics and lots written about this radio -- I guess nobody wants to fix them. Broken ones go cheap on ebay. That's how I've come to own three of them now.

After upgrading the PC hardware used to control this radio I found I had difficulties with the parallel port control. A USB to parallel port adpater was available at some point in the radio's history. Good luck finding one now; you won't. I've done some investigation and have found a cheap substitute. Before that, here's a list of crap I tried that doesn't work.

Doesn't work:

  • USB to Parallel printer adapter. Much of what you'll find uses a Prolific PL2305 USB to printer device bridge controller. Identifies a a USB printing device and won't enumerate as an "LPT" no matter what I tried. I think this is a dead end.
  • Standard parallel port on a PCI-Express card. I'd like to think that I'm pretty good at this computer thing and despite drivers being correct, there's just no way that PowerSDR would talk to the radio on the other side of this thing. No errors, just nothing.
  • Tried a laptop with a PCMCIA slot. Something about how the low-level access on PCMCIA is closer to ISA than it is on PCI-express. The adapter comes with a CH352L and didn't work with PowerSDR. I suspected this was because it was a 3.3v part.
  • The PCI express and PCMCIA ports supplied 3.3v and not 5v. Maybe that's it. Tried a CNC4PC C26 buffer board -- which was crazy unwieldy when combined with that PCMCIA adapter -- still didn't work.
  • Laptop dock with actual parallel port -- I'm not having any luck here.

Didn't try:

  • There's this USB to parallel thing that I would have bought to try if I could only find one being sold. I suppose I could make a board, have oshpark produce it and do that -- but fab'ing up a PC board just isn't on the list of stuff to do right now.

Original FlexRadio SDR-1000 USB adapter

So I decided to research the existing USB adapter again. Maybe I could make one.

The existing adapter uses a Cypress CY7C64713 EZ-USB FX1 chip. The adapter has this part and a few other support components -- voltage regulator, EEPROM, etc. The FX1 has a USB transceiver, 8051 microprocessor and some other stuff baked right in. Maybe I can find one of those somewhere?

Here's what works:

What I did find for cheap on ebay / Amazon was the Cypress CY7C68013 EZ-USB FX2LP USB microcontroller -- reading up on this device shows that the FX1 is a subset of the FX2 capabilities, and is otherwise very close. The EZ-USB FX2LP can be found already on a board with headers, EPROM and connectors for around $10, shipped from amazon.com. I think this would normally be a clone of the Selae logic analyzer board -- it came with the same VID and PID -- anyway, for $10, it was worth a try.

Long story short, blast some firmware on it, wire up to a DE25 connector and it works. Amazing.

Cheap Cypress CY7C68013A board

The HPSDR project also uses PowerSDR and has an "Ozymandias" board that uses the same USB usbio driver as the SDR-1000. I found some vague references to firmware, etc. in my search for information. A limited part of the following document specifies how to load the ozyfw-sdr1k.hex file onto the on-board EEPROM. As I'm primarily a linux user, the following worked for me. Note I had to grab a newer version of fxload from github rather than use the one that came on my Ubuntu distribution as that one didn't have the option (-d) to set the VID and PID.

e.g.

timc@timc-ThinkPad-T510:$ mkdir sdr && cd sdr
timc@timc-ThinkPad-T510:~/sdr$ wget https://raw.githubusercontent.com/TAPR/OpenHPSDR-SVN/master/W5WC/PowerSDR_HPSDR_2_RX2/bin/Release/ozyfw-sdr1k.hex
--2021-08-29 11:21:27--  https://raw.githubusercontent.com/TAPR/OpenHPSDR-SVN/master/W5WC/PowerSDR_HPSDR_2_RX2/bin/Release/ozyfw-sdr1k.hex
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.108.133, 185.199.109.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 21862 (21K) [text/plain]
Saving to: ‘ozyfw-sdr1k.hex’

ozyfw-sdr1k.hex             100%[=========================================>]  21.35K   114KB/s    in 0.2s    

2021-08-29 11:21:29 (114 KB/s) - ‘ozyfw-sdr1k.hex’ saved [21862/21862]

timc@timc-ThinkPad-T510:~/sdr$ git clone https://github.com/esden/fxload.git
Cloning into 'fxload'...
remote: Enumerating objects: 150, done.
remote: Total 150 (delta 0), reused 0 (delta 0), pack-reused 150
Receiving objects: 100% (150/150), 68.16 KiB | 78.00 KiB/s, done.
Resolving deltas: 100% (87/87), done.
timc@timc-ThinkPad-T510:~/sdr$ cd fxload/
timc@timc-ThinkPad-T510:~/sdr/fxload$ make
cc -c -O -Wall   ezusb.c -o ezusb.o
cc -c -O -Wall   main.c -o main.o
cc -o fxload ezusb.o main.o
timc@timc-ThinkPad-T510:~/sdr/fxload$ cd ..
timc@timc-ThinkPad-T510:~/sdr$ fxload/fxload -V
Aug 29 2021 (development)
timc@timc-ThinkPad-T510:~/sdr$ lsusb | grep Cypre
Bus 001 Device 010: ID 04b4:1004 Cypress Semiconductor Corp. 
timc@timc-ThinkPad-T510:~/sdr$ sudo fxload/fxload -t fx2 -D /dev/bus/usb/001/010 -s fxload/Vend_Ax.hex -I ozyfw-sdr1k.hex -d 16c0:06e0 -c 0x01
FX2:  config = 0x01, connected, I2C = 400 KHz
Writing vid=0x16c0, pid=0x06e0
timc@timc-ThinkPad-T510:~/sdr$ #reset the FX2
timc@timc-ThinkPad-T510:~/sdr$ lsusb | grep fffe
Bus 001 Device 011: ID fffe:0007  
timc@timc-ThinkPad-T510:~/sdr$ sudo fxload/fxload -t fx2 -D /dev/bus/usb/001/011 -s fxload/Vend_Ax.hex -d 16c0:06e0 -c 0x01
FX2:  config = 0x01, connected, I2C = 400 KHz
Writing vid=0x16c0, pid=0x06e0
timc@timc-ThinkPad-T510:~/sdr$ #reset the FX2
timc@timc-ThinkPad-T510:~/sdr$ lsusb | grep 16c0
Bus 001 Device 012: ID 16c0:06e0 Van Ooijen Technische Informatica 
timc@timc-ThinkPad-T510:~/sdr$ 

(leave the jumper on the board for this operation...)

Step number next is wiring it up. I desoldered the headers and just to get it done, found a DE25 on a ribbon cable in the junkbox and started soldering.

DE25 pinCY7C64713 pinfunction
118PB0
233PA0
334PA1
435PA2
536PA3
637PA4
738PA5
839PA6
940PA7
1049PD4*
1150PD5*
1251PD6
1352PD7*
1419PB1
1520PB2*
1621PB3
1722PB4
18-25groundground
* -- pin tied to 3.3v via 2.2K resistor

After wiring up all 25 pins, connecting to the SDR-1000 and starting PowerSDR -- it worked. Amazing, because nothing ever works on the first try. Note some of these lines are tied high with a resistor to 3.3v -- that's why you see the resistors ugly-tacked on the top.

In summary, it's possible to make your own USB->Parallel adapter for the SDR-1000 on the cheap. The FX2 Cypress chip appears to be sufficiently backwards-compatible to the FX1 and allows for the ability to eliminate the need for a real parallel port and the pains that the same causes.

Sat Sep 26 12:31:51 CDT 2020

Update: I've been corresponding with some hams via email, and have determined that I'm not referring to the right firmware here. I need to either re-find or read the image off my working device. Send me email if you want an update when that's done...

Sun Aug 29 11:30:56 CDT 2021

Update: text above is now correct. When I initially wrote this page I somehow managed to skip some step that was crucial and was left with the WRONG VID and PID on the board. I had a working board and could not replicate the steps. I bought another board (this time from Amazon) and tried again. The steps above result in a board with the correct VID and PID and I have it working with a SDR-1000 right now.

Getting your SDR-1000 working on 64-bit win10 in 2023

30 Dec 2023

  • Download all from https://github.com/US1GHQ/PowerSDR-2.8.0-SDR-1000/tree/main
  • Get the 64-bit USB driver for your USB dongle from https://github.com/TAPR/OpenHPSDR-WindowsDrivers/releases/download/v1/LibUSB-HPSDR_driver_win10_x86_x64.zip
  • When the USB dongle needs a driver select the one from the above download
  • you will likely need old M-Audio Delta 44 drivers -- v 5.10.00.5069v3

Mon Jan 1 11:41:27 CST 2024

Correction: PD6 above was listed as needing a 2.2k pull-up. I can verify that's in-place on the original interface but causes continual TX with the homebrew interface. Disconnected the pull-up on my interface and it's 100% ok without -- it's just fine. *shrug*

This page last modified Mon Jan 1 11:40:09 CST 2024 by timc!

go back