Flex-3000 NTRX

adventures in broken hardware

Nothing ventured, nothing gained. It seems good finds come along infrequently on ebay, but every so often I find something. In addition to a non-working SDR-1000 (fixed, but that's a different story) I found a non-working Flex-3000 NTRX board for around $30. Well, I got it working. Here's the story.


My F3K project board

7 July 2017. First power-up. Pulls about 2A when supplied with 5VDC on SV4. No activity to speak of. This seems high. I used my Seek IR camera to determine that IC28 is getting super-hot. IC28 is a TPS79318, a 1.8v regulator for the TCD2210 firewire controller. The regulator is about 1mm square and there's no way I can tell that it's getting that hot without the IR camera. I've had some good success using my IR camera as one of the first diagnostic tools on a non-working board. Upon removing the regulator, power consumption goes down to about 500mA. This seems reasonable.

13 July 2017. IC28 feeds three points on the TCD2210; that's it. Those points have series inductors which seem convenient to remove for testing individual current sinks on the TCD2210. In the previous week a new regulator arrived from DigiKey, so I removed the three inductors and replaced the regulator. Testing current consumption, TCD2210 pin 87 has 2 ohms to ground, this is the thing that's sucking down all the power. Suspect the TCD2210 is bad.

7 Sep 2017. Two TCD2210s received from Hong Kong via some unknown vendor off AliExpress. This is far from a preferred parts source, but it's either that or give up. They weren't expensive, so whatever. I removed the existing TCD2210 by taking multiple passes with an x-acto knife across the pins until the chip body is free. Luckily the package does not get soldered down on the back of the body. Several quick swipes with the Metcal cleans the old pins off the pads. New part is soldered down under 30x magnification. The TCD2210 is a QFP-128 package, definitely one of the more challenging things I've soldered on so far.

My board still doesn't show on the firewire bus, but on power-up, the board relays now click. This is different; I suspect it's no longer brain-dead. Hmmm. With a new TCD2210, do I need to flash new firmware on this thing? Maybe? I can't find good docs on the chip, so ... maybe but probably not? Most of my work is done late at night. As the night progresses my ability to think clearly declines so I find it best to leave questions like this for later.

27 September 2017 -- Find F3K firmware in a PowerSDR version. The old support.flexradio.com site is kinda broken when it comes to some downloads but I make do. FW update should be automatic on starting, but I don't get any firewire connection. Huh. X2 sure looks like a serial port. A scope shows output on power-up. I attach a 3.3v RS232 level converter -- it speaks 115200 baud!

Watchdog Int installed!!!

RedBoot(tm) bootstrap and debug environment [ROMRAM]
Non-certified release, version v2_0 - built 12:23:07, Sep 29 2006

Platform: TCAT DICE/VB (ARM7TDMI)
Copyright (C) 2000, 2001, 2002, Red Hat, Inc.

RAM: 0x00000000-0x00800000, 0x00016528-0x007ed000 available
== Executing boot script in 20.000 seconds - enter ^C to abort
RedBoot> fis load dice
RedBoot> go
Could not initialize environment - will use default values
***************************************
* myMode board configuration          *
* Board is configured to mode: 0      *
* Name: DICE JR EVM 28/28             *
* Use: dicedriver.dump                *
***************************************
routeMid
Initializing Hardware.TRX.......PAError reading PA100 IC16 in (I2C 0x4E).  Val read was: 0.  (Should have been 0xAB) Error: 0
.Error reading PA100 IC13 in (I2C 0x4C).  Val read was: 0.  (Should have been 0xAB) Error: 0
.Error reading PA100 IC3 (I2C 0x5C).  Val read was: 0.  (Should have been: 0xAB) Error: 0
.Error reading PA100 IC4 (I2C 0x5A).  Val read was: 0.  (Should have been: 0xAB) Error: 0
..setupPA error: 4Error detecting PA


**********************************************************
* FLEX-5000 Command Line Interface System                *
* Copyright 2005-2012 by FlexRadio Systems, Inc.         *
**********************************************************
* Model: FLEX-3000  Serial Number: XXXX-XXXX  r2.1.3.7   *
**********************************************************

Aside from some Russian page talking about the details of the 5000, I can't find any references online to this serial port, anyone else who's hacked up a 3000, etc. Granted, the radio's a little pricey, but I don't find a whole lot of good old-fashioned warranty voiding either... I've also stumbled across their flexwire concept in my various searches for information. What a great idea! Flex is as open as any company (if not more so!) with schematics and KBs and information -- but on the lower levels here I found extremely little information about what's going on that I didn't glean from the Flex schematics myself. But I gotta say -- that serial output is turning out to be a helpful find. I also found a help command on the serial CLI and I also find literature from DICE about embedded commands, but nothing too insightful here other than how you can really screw up by zero'ing the firmware; I'll avoid doing that. I'm now thinking that this firmware obviously lives external to the TCD2210 so it's probably fine; my next problem is elsewhere.

I still don't see anything on the firewire bus. The errors in the serial output are interesting regarding missing devices on the PA100 I2C bus. Does the whole radio need to be "present" prior to IEEE1394 initialization? I don't know, but those listed parts above are on the schematic and it's quite helpful with what values it expects. I consider buying the chips -- all current and relatively cheap, but instead decided to write some firmware for an Arduino to act as a slave at multiple I2C addresses. Found some info on-line about this but only code fragments. Well, here's a project that works.

https://github.com/tczerwonka/i2c_multidev_emulate_f3k

Check the README.md on that for more info.

The Arduino firmware isn't perfect at all but it allows an error-free startup. I think it might even collide with some other on-board I2C devices, but again, startup is now error-free. Still no IEEE1394 initialization. Maybe this is not my problem.

5 October 2017 -- Focus on the IEEE1394 input. Before the PHY, the firewire connector goes to a couple of inductors and a surge supression chip that's about the size of a pinhead. Probing for continuity I find that pin 3 from the firewire connector does not pass through L77. I jumper L77 and it still doesn't work. So I remove L77, remove IC36 (TPD4E001DRLR) surge supressor) and jumper over L77.


The jumpered inductor and new TCD2210

Power up, sans-arduino -- it works! PowerSDR complains about a missing PA but no surprise there. When I clip an antenna lead to the antenna input I actually receive stations. So, I think it's fixed.

I will replace the inductor and surge supressor, but this is good for now.

What's next? In an ideal world I'd find a broken flex-3000 PA on ebay for $20 more and make a franken-3000. I can dream, right? I will probably spend some time mounting the board properly in a 2U case and consider either writing enough arduino code and/or making a board with the proper devices to answer for real on the I2C bus...and then adding PA/tuner circuitry.

Or maybe the right answer is doing the minimum to be able to add a 2M and 70cm transverter in the case to drive my microwave transverters. Or both?


Sat Oct 14 21:20:34 CDT 2017

I think it has to be a HF radio. The options in PowerSDR for interfacing with a microwave transverter appear to be mostly greyed out for the Flex-3000 radio. I could be wrong as I only have half of a radio. The F3K in the factory form doesn't seem to be targeted for transverter operation anyway.

I believe I have found that the SDA0/SCL0 I2C bus is common to all devices on the NTRX and PA boards. The TCD2210 chip has the primary I2C interface which goes to an I2C multiplexer -- one side for the "radio", other side for flexwire. I think I'll switch to using my Teensy 3.2 board -- a 32-bit ARM processor that's arduino-compatible -- for use as a multi-slave I2C device. In fact, the enhanced I2c library for the Teensy has an example for acting as a basic slave over a range of addresses -- exactly what I want to do.

12 Nov 2017

Intermediate board built with P-channel mosfet for power control, 5V regulator and teensy 3.2 attached. Teensy code in github mostly works and thought of what I suspect is a solution for the 'not working' half of the problem shortly after shutting down everything for the night. That is, the i2c_t3h wire library takes a range -- which is damn convenient except for one of the addresses in the range is on the NTRX board. Will see if my workaround works-around the problem hopefully soon.

Mon Nov 13 23:45:30 CST 2017

Strange -- if you follow the documentation in the header file maybe things work better. I read through the documentation for the Enhanced I2C library for the Teensy 3.x devices -- on the 3.2, two I2C busses are supported. Turns out the pins for the second bus (Wire1) are located on the other side. A little bit of soldering and away it goes.

Next up is to figure out the right answers to supply for the missing devices when queried.


Mon Jan 21 23:36:11 CST 2019

Procrastination for the win. The I2C libraries were updated and resolved the Wire/Wire1 problem I had before with the Enhanced I2C library above. More extensive code added to my github project for at least proving that I am getting reasonable requests from the NTRX. Next steps, getting individual states from the requests, determining if the Teensy3.2 has sufficient pins to connect to the SDR-1000 PA for LPF, etc.


This page last modified Mon Jan 21 23:36:11 CST 2019 by timc!

back to where you probably came from