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:
Didn't try:
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. 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.
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 202330 Dec 2023
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! |