http://www.arrl.org/frequency-measuring-test
The FLEX-6000 radios are well suited to perform in the challenge, but there's some important information you should know before having a go at it. I apologize in advance that this will not be a complete "how to" guide and I hope that some others may be able to answer questions on what I've written as they arise. I've been meaning to post this for several weeks and just haven't had the time.
In a direct sampling radio like the FLEX-6000, there is an Direct Digital Synthesizer (DDS) or Numerically Controlled Oscillator (NCO) performing the tuning of receivers in the digital domain. In the FLEX-6000, there is a complex set of DDSs and mixers that control the final output frequency of the radio. We've not previously exposed how all this works in the radio and so the opaqueness of this part of the radio makes competing in the FMT hard. So this post will provide enough information to get a much more accurate measurement for those that are interested. The capabilities here were developed for a government customer of ours and have been shown to get frequency results within a few hundred microHertz (yes, microHertz). It is important to point out that doppler shift in the ionosphere and other considerations will affect your on-air accuracy, but the FLEX-6000 should get you closer that any other amateur radio I know of.
Note that for best results, you will need to have a FLEX-6500 or FLEX-6700 with either the on-board GPS option or a 10MHz reference that is derived from a GPS locked oscillator (or cesium, rubidium, hydrogen maser, etc). A FLEX-6300 will simply not have the same level of accuracy, but you can have a go after using the WWV calibration built into the radio. Incidentally, if you are using a FLEX-6500 or 6700 that is locked to a reference, ensure that you have your frequency offset setting set to ZERO.
THEORY
When a DDS is tuned, it is supplied with a frequency tuning word (FTW). The frequency tuning word is limited to a set number of bits and most of ours in the radio are 30-32 bits. Every frequency cannot be represented with 32 bits, of course, and the error in any given DDS can be calculated by taking the sampling radio divided by 2^<# of bits>. In our case, this would be 245,760,000 / 2^32 = 57.22mHz (millihertz). This means that the radio can be off as much as 57mHz at any time. Some changes were made a few months ago that limit this to +/- 28.61mHz (SmartSDR v1.10.9 and later). In addition, a new API command was added that will actually report the error for both the receiver and transmitter:
http://wiki.flexradio.com/index.php?title=TCP/IP_slice#GET_ERROR
So you can tune a receiver and then connect to the radio using the API and request the error. Then you can use available software to measure the audio frequency of a tone in your passband and make the adjustment provided by the get_error command. Details on using the API are beyond the scope of this quick posting so you'll have to look around to get that information. The short version is that you find your radio's IP address, use a telnet client to telnet to it and then issue the get_error command after you've tuned your slice receiver.
I hope this helps someone use the FLEX-6000 in the FMT and I'd be glad to answer questions as I have time. Again, our military customers use this to get within a couple hundred microHertz so you should be able to do very well in the FMT by applying this information.
Steve - N5AC, VP Engineering / CTO
- 1057 Posts
- 1099 Reply Likes
Posted 3 years ago
Ria - N2RJ, Elmer
- 2317 Posts
- 962 Reply Likes
- 698 Posts
- 91 Reply Likes
Thanks
Tim - W4TME, Customer Experience Manager
- 9199 Posts
- 3559 Reply Likes
Ria - N2RJ, Elmer
- 2317 Posts
- 959 Reply Likes
- 698 Posts
- 91 Reply Likes
Neal - K3NC, Elmer
- 563 Posts
- 192 Reply Likes
- 124 Posts
- 17 Reply Likes
roger
Ria - N2RJ, Elmer
- 2317 Posts
- 959 Reply Likes
There are
http://downdetector.com
http://www.isitdownrightnow.com/
http://currentlydown.com/
etc etc
Basically a lot of bored/creative programmers etc who like creating useful things for public consumption.
AND it's not limited to websites. There are toolbars, browser extensions, and even access via REST APIs.
Ever wondered what your favorite website is running? This is an oldie but goldie:
http://toolbar.netcraft.com/site_report
Since I run a large website as my day job I spend half my day looking for tools to make my life easier (or I write my own when I don't find them).
- 698 Posts
- 91 Reply Likes
Like just now there was some weird looking pulsing signal at about 14.097.900
Thanks
Steve - N5AC, VP Engineering / CTO
- 1057 Posts
- 1099 Reply Likes
- 6 Posts
- 0 Reply Likes
I am assuming that all 6700 will have the same offset when tuned to the same frequency. I tried to use TELNET to use the get_error command; but have been unsuccessful so far. This is my first time trying to use the API. Just out of curiosity, I used the following frequencies:
14.120 USB
7.063 USB
3.597 USB.
I used those as the base frequency and measured the frequency of the tone with a frequency counter locked to the GPS 10 MHz.
Chances are very good that others may have used the same frequencies. If you get a chance, could you please post the error for those frequencies if you have the time.
Thanks,
Tim K8XS
Tim - W4TME, Customer Experience Manager
- 9199 Posts
- 3559 Reply Likes
- 6 Posts
- 0 Reply Likes
I got that far. At the telnet prompt, I issue the command o 192.168.1.10 4992
(where 192.168.1.10 is the IP of my 6700) . This opens a connection with the 6700 and the responds with a boatload of status information. It appears that each item of status is separated by a LF character and not a CRLF because the data just scrolls across my telnet window and drops to the next line (without a return to column 1) for each new status item. After that and with the 6700 being tuned to the frequency of interest, I issue the command c21|slice get_error 0 CRLF to get the error for slice 0 and the terminal just hangs there. It appears that I get no response. At this point, I am stuck. Over.
Steve - N5AC, VP Engineering / CTO
- 1057 Posts
- 1099 Reply Likes
- 6 Posts
- 0 Reply Likes
Interesting that the value changes based on how you got there. I noticed something else that was interesting. I thought that even if I could not use get_error, I could measure the error. I used two different signal generators ( a Rhodes and Schwarz and a PTS) that were locked to the same GPS 10 MHz reference as the radio and frequency counter. I set the 6700 to a frequency that I used in the FMT. I then set a sig gen to a frequency 1kHz higher than the radio. That should get me a 1kHz tone when the radio is set to USB. I ran the test and I was getting what seemed to be reasonable results. I measured something like 18.6mHz on one frequency and 23.4 mHz on another , etc. The thing that seemed to give the values credibility was that I got the same answer regardless of the signal generator I used. Then for some reason, I resized the SmartSDR window. Well I was quite surprised to see that the value on the frequency counter changed. I had not changed the radio tuning or the sig gen setting but the 1kHz tone changed in value. Not by a lot. Maybe on the order of a couple of mHz or 10s of mHz. So, there must be something else going on that I do not understand.
Steve, thank you for your time.
Steve - N5AC, VP Engineering / CTO
- 1057 Posts
- 1099 Reply Likes
- 6 Posts
- 0 Reply Likes
C:\> telnet
Welcome to Microsoft Telnet Client
Escape Character is 'CTRL+]'
Microsoft Telnet> o 192.168.1.10 4992
Connecting To 192.168.1.10...
V1.2.0.0
HA07786D6
M10000001|Client connected from IP 192.168.1.11
SA07786D6|radio slices=7 panadapters=7 lineout_gain=66 lineout_mute=0 headphone_gain=47 headphone_mute=0 remote_on_enabled=0 pll_done=0 freq_error_ppb=0 cal_freq=10.000000 tnf_enabled=1 snap_tune_enabled=1 nickname=FLEX-6700 callsign=K8XS binaural_rx=0 full_duplex_enabled=0 band_persistence_enabled=1 rtty_mark_default=2125 enforce_private_ip_connections=1
SA07786D6|radio filter_sharpness VOICE level=3 auto_level=0
SA07786D6|radio filter_sharpness CW level=3 auto_level=0 SA07786D6|radio filter_sharpness DIGITAL level=3 auto_level=0 SA07786D6|radio static_net_params ip= gateway=nettmask= SA07786D6|interlock timeout=0 acc_txreq_enable=0 rca_txreq_enable=0 acc_txreq_polarity=0 rca_txreq_polarity=0 tx1_enabled=1 tx1_delay=0 tx2_enabled=1 tx2_delay=0 tx3_enabled=1 tx3_delay=0 acc_tx_enabled=0 acc_tx_delay=0 tx_delay=5 SA07786D6|client 0xA07786D6 connected c21|slice get_error 0I get no response
Steve - N5AC, VP Engineering / CTO
- 1057 Posts
- 1099 Reply Likes
screen telnet 192.168.1.58 4992
Here's my output:
Trying 192.168.30.58...Connected to 192.168.1.58.
Escape character is '^]'.
V1.3.0.0
H86C07A9A
M10000001|Client connected from IP 192.168.1.67
S86C07A9A|radio slices=7 panadapters=7 lineout_gain=46 lineout_mute=0 headphone_gain=50 headphone_mute=0 remote_on_enabled=0 pll_done=0 freq_error_ppb=0 cal_freq=15.000000 tnf_enabled=1 snap_tune_enabled=1 nickname=N5AC_Dev callsign=N5AC binaural_rx=0 full_duplex_enabled=1 band_persistence_enabled=1 rtty_mark_default=2125 enforce_private_ip_connections=1
S86C07A9A|radio filter_sharpness VOICE level=2 auto_level=1
S86C07A9A|radio filter_sharpness CW level=2 auto_level=1
S86C07A9A|radio filter_sharpness DIGITAL level=3 auto_level=0
S86C07A9A|radio static_net_params ip= gateway= netmask=
S86C07A9A|interlock timeout=0 acc_txreq_enable=0 rca_txreq_enable=0 acc_txreq_polarity=0 rca_txreq_polarity=0 tx1_enabled=1 tx1_delay=0 tx2_enabled=0 tx2_delay=0 tx3_enabled=0 tx3_delay=0 acc_tx_enabled=0 acc_tx_delay=0 tx_delay=0
S86C07A9A|eq rx mode=1 63Hz=10 125Hz=10 250Hz=10 500Hz=10 1000Hz=10 2000Hz=10 4000Hz=10 8000Hz=10
S86C07A9A|eq rxsc mode=1 63Hz=0 125Hz=0 250Hz=0 500Hz=0 1000Hz=0 2000Hz=0 4000Hz=0 8000Hz=0
S86C07A9A|client 0x86C07A9A connected
c1|slice get_error 0
R1|0|+19.073483,+9.536743
c1|jkdhsf sdkhf ksldf
R1|50000015|
Even the last command that is gibberish gets a response. If you get nothing back, there's a problem with what the radio is (isn't) seeing from your client. There's also a setting in PuTTY that allows you to specify how <LF> or <CR><LF> are handled that will make everything appear in a single line.
- 6 Posts
- 0 Reply Likes
I used my MAC and it worked perfectly. Thank you very much.
73,
Tim K8XS
- 6 Posts
- 0 Reply Likes
- 4239 Posts
- 1351 Reply Likes
I had never thought about "puttying around" the 6500!
I tested a few simple commands with success.
I didn't realize exactly how easy it was to send TCP/IP commands via Telnet.
I have programmed information exchanges for the MIDI Control project that got stalled, but This has convinced me even more that all I need to do is learn enough to open up and read a serial port and a TCP port and I should be able to write a basic MIDI controller interface in C#. Perhaps a summer vacation project.....
- 280 Posts
- 44 Reply Likes
I had some trouble with no response to c21|slice get_error 0 in telnet and PuTTY on
win7
Even after connecting to the radio on its local address and the correct port.
Just now tried PuTTY on win10 64bit.
Connected OK but no response on slice 0.
Though running on Slice A in one panadapter on the Maestro the initial screen reported 3 panadapters and 3 slices.
After bit of lateral thought I tried slices 1-4.
Got a response on slices 2 and 3 of R1|0| +0.000000, +8.010864
Slice A 1.8366 MHz running WSPR.
No response for slices 0, 1 or 4 (know that for the 6500 there is no 4)
However c21|slice list (not l) returns R21|0|0
So no response if the slice numbers are wrong.
My radio must be a bit confused!
Why are RX and TX different?
Is there a simple math way of mapping any decimal frequency to an integer binary FTW?
Andrew VK5CV
- 115 Posts
- 11 Reply Likes
And, thanks to Steve for posting the FMT info. Looking forward to the next FMT.
73, Tom
K1FR
- 64 Posts
- 17 Reply Likes
- 761 Posts
- 164 Reply Likes
Ria - N2RJ, Elmer
- 2317 Posts
- 957 Reply Likes
Ria - N2RJ, Elmer
- 2317 Posts
- 962 Reply Likes
- 89 Posts
- 5 Reply Likes
Below is the chart I used to set my calibration in the FLEX S/W before each part of the FMT. I got pretty good results, under 1 HZ on 40 and a little over 1 HZ on the other bands.
The ppb numbers for the WWV freqs are exact numbers I discovered for those freqs and the other numbers are interpreted.
Freq ppb
2.5 9000
3.8 6750 80 mtrs
5.0 4500
7.5 3400 40 mtrs
10.0 2300
12.5 1950
15.0 1600 20 mtrs
- 89 Posts
- 5 Reply Likes
- 944 Posts
- 197 Reply Likes
k3Tim/6
- 90 Posts
- 6 Reply Likes
- 824 Posts
- 199 Reply Likes
- 90 Posts
- 6 Reply Likes
- 824 Posts
- 199 Reply Likes
- 90 Posts
- 6 Reply Likes
K5CM - 40 7064197.48
W8RKO - 80 3598215.73
W8RKO - 40 7064083.50
These were the readings I measured and thought I entered.
N8OB - Bob
- 824 Posts
- 199 Reply Likes
It looks like 100Mhz on each field. That must be a bug, so I would email them and ask them to update your entry.
Your results look great and about what I got with my 6300.
73

- 90 Posts
- 6 Reply Likes
Ria - N2RJ, Elmer
- 2317 Posts
- 962 Reply Likes
http://www.k5cm.com
K5CM FMT transmitting equipment:
A HP Z3801 GPS frequency source clocks a HP-3336B. A 10 db transistor amp follows and drives a 12BY7 / pair 6146. Then to the final amplifier running 300 to 400 watts out. There are no mixers or any device in the chain of amplifiers that might impact the accuracy of the GPS frequency source. As a reality check, I periodically log the frequency source against WWV and other GPS referenced sources. I monitor each transmission with a completely separate receive system to look for any instability or short term drift. The separate system is not locked to the GPS transmitting system.
I typically see considerably less than 1 mHz difference at 10 Mhz when comparing two Z3801's or a Z3801 and a Tbolt, over a 10 second period.
Antennas:
160 - Vertical
80 - Cage Dipole (favors East, West, and North) or Dipole slopping down from 140' tower.
40 - Dipole hanging between two 80' towers (favors East, West)
30 - Dipole
20,17,15,12,10 - 4 element SteppIR
W6OQI FMT transmitting equipment:
My transmitting setup consists of a HP Z3801 clocking a HP 3336B which drives a Johnson Viking I transmitter, the output of which is attenuated by a 6 dB attenuator, to then drive an Icom PW-1 amplifier to about 500 Watts. The antenna is an inverted Vee which favors north and south from the Los Angeles area. The QTH is actually La Canada, CA at 2000 foot elevation on the mountains on the north side of the Los Angeles basin. The Rose Bowl in Pasadena is about three miles to the east.
I am amazed that these guys went pretty old school for their transmitters.
Ria - N2RJ, Elmer
- 2317 Posts
- 962 Reply Likes
- 824 Posts
- 199 Reply Likes
- 90 Posts
- 6 Reply Likes
Ria - N2RJ, Elmer
- 2317 Posts
- 962 Reply Likes
- 564 Posts
- 104 Reply Likes
C1|slice get_error 0
R1|0|+20.877246,+11.444087
c1|slice ger_error 1
R0|0|-13.668720,+11.444087
c1|slice ger_error 2
R0|0|+3.970396,+11.444087
c1|slice ger_error 3
R0|0|-18.307796,+11.444087
c1|slice ger_error 4
R0|0|+3.814694,+11.444087
c1|slice ger_error 5
R0|0|+15.260337,+11.444087
c1|slice ger_error 6
R0|0|+7.631039,+11.444087
c1|slice ger_error 7
R0|0|-22.887599,+11.444087
- 44 Posts
- 1 Reply Like
1) Should I be concerned over the large RX error? If I read the thread correctly that is mHz which is 20.042Hz.
c1|slice get_error 0
R1|0|+20042.419434,+10.652245
2) Using the 6600 and WSJT FreqCal, I measure a 5MHz reference at 4,999,996.191Hz over a 4 minute duration. A Fluke frequency counter concurrently measures the same reference signal to within 10uHz of 5MHz. Given the info in this thread I would have thought I would be much closer. Any thoughts as to why the difference? Summary of the WSJT reported data summarized in Excel is as follows:
Average of Measured Frequency 4,999,996.191
Min of Measured Frequency 4,999,995.822
Max of Measured Frequency 4,999,996.742
StdDev of Measured Frequency 0.151445633
Some insight regarding the configuration. The 5MHz reference signal is generated by an HP ESG signal generator. That 5JHz reference is feeds both the Fluke frequency counter and ANT1 of the 6600. That signal generator, the Fluke frequency counter and the 6600 (yes, it is using the external 10MHz reference) all share a common time base via a TAPR distribution amp. That distribution amp is fed by a Rb oscillator (Symmetricom X72) disciplined by a GPSDO (one of the "good" BG7TBL GPSDOs).
Thanks,
Ron
Michael Walker, Employee
- 1098 Posts
- 325 Reply Likes
- 44 Posts
- 1 Reply Like
Ron
Michael Walker, Employee
- 1098 Posts
- 325 Reply Likes
- 44 Posts
- 1 Reply Like
Ron
Michael Walker, Employee
- 1098 Posts
- 325 Reply Likes
You can use a 6300, but you will need to calibrate it to known good signals. A few years ago, I got to less than 1 Hz on all transmissions with a 6300 and using the FreqCal that is built into WSJT. Don't wait for the last moment as it does take a bit of setup.
It would be very cool to see a LOT of Flex owners give this a shot and then submit their results. I might start a new community entry to generate some interest for the November FMT.
Mike
- 44 Posts
- 1 Reply Like
That (zeroing out the offset) resolved the issue. I now get:
RX error (in milliHertz) = -3.814697
TX error (in milliHertz) = +3.914697
BTW, is there any reason the offset is ignored when using a internal/external GPSDO. Seems like it's primary reason for existence is to a correction mechanism for the internal TCXO/OCXO?
So moving on to your comment to "see a LOTof Flex owners". I started to put together a how to that, if you're willing to work with me, I'll incorporate any corrections/updates. Below is the current table of contents. If you are willing to review it, please send me an email to ron_at_panman_dot_us
Thanks,
Ron
Michael Walker, Employee
- 1098 Posts
- 325 Reply Likes
I'm sure several of us would love to help you out by reviewing it. You can email it to me at michael@flex-radio.com.
And, I think the reason we zero it out is that we expect the GPSDO or the 10Mhz reference to be more accurate than the onboard TCXO. However, I have asked Engineering to be sure.
- 120 Posts
- 34 Reply Likes
- 44 Posts
- 1 Reply Like
Michael Walker, Employee
- 1098 Posts
- 325 Reply Likes
Mike
- 44 Posts
- 1 Reply Like
73,
Ron, WB2WGH
- 74 Posts
- 17 Reply Likes
0.6185 MHz 19.073486 mHz
1.1285 MHz -3.81300 mHz
9.9985 MHz 38.146973 mHz
14.9985MHz -22.88184 mHz
I was surprised that the get_error query returned a value of 38.146973 based on Steve's statement. Any ideas? I have 14 satellites visible and tracking 11.
Chuck, W9WLX
- 554 Posts
- 96 Reply Likes
- 74 Posts
- 17 Reply Likes
http://wiki.flexradio.com/index.php?title=TCP/IP_slice#GET_ERROR
- 44 Posts
- 1 Reply Like
Ron
- 44 Posts
- 1 Reply Like
As to your results, the last 2 frequencies look to be the WWV frequencies less 1500Hz. Were you measuring WWV and providing the slice frequency?
As to the other 2, I don't recognize those. DId you used a signal generator referenced to a GPSDO to generate the 2 test frequencies then measured the error on the 6600 using the method outlined by Steve and documented in my PDF? If so, one possible factor could be that GPSDOs are extremely accurate when averaged over the long term but not as accurate for short term measurements.
Ron
- 74 Posts
- 17 Reply Likes
Thanks for putting the document together. Nicely done!
Chuck
- 554 Posts
- 96 Reply Likes
Ron, no problems with your document.
- 554 Posts
- 96 Reply Likes
Related Categories
-
FLEX-6700 Signature Series SDR
- 3133 Conversations
- 644 Followers
-
FLEX-6500 Signature Series SDR
- 3676 Conversations
- 953 Followers
-
FLEX-6700R Signature Series SDR
- 891 Conversations
- 150 Followers
Mike va3mw
I'm doing it the old fashion way with the FMT code that comes with WSPR.
73