Welcome to the new FlexRadio Community! Please review the new Community Rules and other important new Community information on the Message Board.
If you are having a problem, please refer to the product documentation or check the Help Center for known solutions.
Need technical support from FlexRadio? It's as simple as Creating a HelpDesk ticket.

MORCONI, the ultimate CW interface.

MORse COde Network Interface for Flex 6X00/8X00 Series Radios

After the successful development of WKFlex, I was still looking for the ultimate solution to the lack of a remote option for transmitting serious CW with the Flex. I considered adding the FlexRadio native CW API protocol to WKFlex but was attracted by the idea of developing a more sophisticated yet simple and functional solution. Thus, MORCONI was born.

MORCONI is a microprocessor-managed interface that connects your networked radio to your straight key, bug, or any electronic key. Once programmed and configured, it does not require a computer connection (other than for power, if you don’t want to use an external power supply) and works completely standalone. You can think of it as a remote extension of your radio’s key jack.

Acknowledgements

Before digging deeper into the project, I want to thank Mike, VA3MW and Andy, VA3CW from FlexRadio for making a 6300 available to me for debugging the code while waiting for my 8600 to be delivered. I also want to thank Len KD0RC, who influenced me with his TeensyMaestro project.

The Interface

If you’re not comfortable with microprocessors or soldering connectors, please keep reading, there is a solution!

The project is built around a Teensy 4.1 32-bit microcontroller. Several benefits come with using this board, such as:

  • Native Ethernet Interface
  • Audio library
  • Arduino-compatible programming language
  • Easy updates using a firmware-like procedure

The board with the Ethernet chip and the Ethernet connector kit, can be purchased through PJRC or Amazon and is relatively inexpensive. By the way, I’m not affiliated in any form with PJRC.

Once you get the board, connect your Morse key or the output from your electronic keyer to PIN 0 and GROUND. The sidetone output is connected between PIN 1 and GROUND and goes to an amplified speaker or your computer’s sound card input. In my prototype, I used a 3.5 mm mono jack for both.

Firmware version 1.0 – 20240731 can be downloaded from my Dropbox:

https://www.dropbox.com/scl/fi/qs2jn5l7aqe1yeo0gnr9e/MORCONI.zip?rlkey=6kk2str7yeptenu86wek0n34f&dl=0

The package consists of three files:

MORCONI.INO.HEX (the firmware)

MORCONI.CFG (the configuration file)

TEENSY.EXE (the Windows version of the firmware loader, it is available for several OS platforms)

Edit the MORCONI.CFG file (self-documented) and change the IP address of the radio to match your radio (local network or remote router exposing the API port of your radio). For now, you can leave everything else with default values. Save the file on a microSD card and insert it into the Teensy slot. Connect the Teensy to your computer, run the Teensy.exe uploader, search for MORCONI.INO.HEX, and upload it to the microprocessor.

Turn on the radio, run SmartSDR, and if everything went well, you’ll hear a high-speed “K” sent from the speaker. The internal LED, which was ON and RED, indicating no connection to the radio, will turn OFF, and you should be in business.

Some Extra Thoughts

I wanted to make it easy for everyone to build this interface, which created some limitations. The lack of a Human Interface like a display and a controller does not allow using the Flex discovery protocol and Multiflex; therefore, the only way to configure the connection to the radio is through the configuration file. If there is enough demand, I can develop a deluxe version with a small display and an encoder.

I’m working on a 3D printed enclosure.

If you really, really want, I can build the interface for you. Reach out to me offline.

The source code will be available on GITHUB once sanitized.

Known Issues for Version 1-20240731

Sidetone Audio: Generates some clicks. I’m working on fixing this; there are some options to be tested.

SmartSDR Failback: There are already some failback strategies implemented in the code. If the radio disconnects, the interface starts a recovery routine and keeps trying to reconnect. If the radio is connected, the interface waits for SmartSDR to connect before initializing. There is not yet a failback procedure if the radio stays connected but SmartSDR goes down; this will be developed in the next release.

73 de Max, N5NHJ (I8NHJ)

Comments

  • KD0RC
    KD0RC Member, Super Elmer Moderator

    Nicely done Max! I tried it and it works great. In my case, I have a router that is starting to fail, so I have my Flex, computer and all peripherals (TeensyMaestro, Morconi, etc) plugged into a switch with no connection to the router. This meant specifying an IP address for the Morconi in the same LAN segment as the radio (169.254.something). I changed the SD card accordingly and had instant success!

  • Mike-VA3MW
    Mike-VA3MW Administrator, FlexRadio Employee, Community Manager, Super Elmer, Moderator admin

    I just got my Teensy 4.1 today. I'll try to get this tested ASAP as well, but I am sure it is great!

  • Dan-N7HQ
    Dan-N7HQ FlexRadio Employee, Community Manager admin

    Terrific!!! The best things happen in our community. I am building mine this weekend!

  • Mike-VA3MW
    Mike-VA3MW Administrator, FlexRadio Employee, Community Manager, Super Elmer, Moderator admin

    Nice work.

    I can get to my remote radio (6600) via a VPN, so I can do a direct IP connection to port 4992.

    DHCP didn't seem to work for me, but once I hard coded it, it was fine, and I knew what IP address the Teensy was so I could ping it to make sure it was on the LAN.

    The ethernet adapter only came with 1 6-pin header, so I had to get creative by soldering the head pins without the holder. No big deal.

    I took the output from my WinKeyer and connected it into Teensy as described and it was on the air and using the sidetone from the WinKeyer worked FB. I thought about casing it, but heat-shrink seems to work. :)

    I did plug some Airpod headphones into the headset and it was plenty loud enough.

    I had the radio on 40M and the power set to 1 watt and called CQ. I wanted to see if the RBN copied me which would confirm I was sending readable CW.

    Nice work Max!

    Mike va3mw

  • Mike-VA3MW
    Mike-VA3MW Administrator, FlexRadio Employee, Community Manager, Super Elmer, Moderator admin

    One of the amazing things about CW over the LAN is how hard it is to do and make it work correctly. You can't just send DOTS and DASHES over a LAN (or VPN for that matter and have it sound like you sent it.

    As an example, so remote solutions will have the WinKeyer copying your sending, decoded that you sent an A. Then the WK sends the A to the radio which has a built in WK and then the radio sends out the A in perfect CW.

    While this is a solid working solution, you can see that the WK has to wait first to copy the CW letter and then send it to the radio. The radio always runs a single character behind. Not so bad for an E but a long wait for a Zero.

    The FlexRadio engineers identified this as a problem back on day 1 around 2012 or so. Hence, what they do is measure the Time of each DIT or DAH and Space and pass that to the radio. So, if you send weird stuff, the radio will transmit weird stuff as well. And, this allows operators to maintain their fist signature.

    Those of you who want to see what it looks like, I captured a small amount of the data stream from Max's MORCONI as it is being sent out on the LAN. You can see the command, 'cw key 1' and a time duration and a 'cw key 0' and a time duration.

    The way FlexRadio did this makes this very robust and allow for LAN (or VPN/WAN) jitter.


    C631|cw key 1 time=0xB85A index=225 client_handle=0x6A2C5ABC
    C632|cw key 0 time=0xB93B index=226 client_handle=0x6A2C5ABC
    C633|cw key 1 time=0xB993 index=227 client_handle=0x6A2C5ABC
    C634|cw key 0 time=0xB9DE index=228 client_handle=0x6A2C5ABC
    C635|cw key 1 time=0xBAC5 index=229 client_handle=0x6A2C5ABC
    C636|cw key 0 time=0xBB10 index=230 client_handle=0x6A2C5ABC
    C637|cw key 1 time=0xBB5C index=231 client_handle=0x6A2C5ABC
    C638|cw key 0 time=0xBBA7 index=232 client_handle=0x6A2C5ABC

  • N5NHJ
    N5NHJ Member ✭✭✭

    MORCONI for FLEX Version 1.1 is ready for you to download from

    http://www.dropbox.com/scl/fi/lnhsjbkw4ctrocli0b5y5/MORCONI-FLEX-V11.zip?rlkey=n1yapmyjs586c4ykiqzvio3w7&dl=0

    Version 1.1 fixes the sidetone audio clicks.

    The package also contains a document with a configuration example for remote installation.

  • N5NHJ
    N5NHJ Member ✭✭✭

    I've just created a discussion group: MORCONI+subscribe@groups.io

  • N5NHJ
    N5NHJ Member ✭✭✭
    edited August 24

    The 3D printed box files are available. Please, reach out to me directly.

    Soon there will be a MORCONI interface available for any radio.

  • N5NHJ
    N5NHJ Member ✭✭✭

    A short video demostrating the MORCONI system.

    This is about the AllRigs version. For FlexRadios you just need the Client box.

    73, Max

  • N5NHJ
    N5NHJ Member ✭✭✭
    edited August 31

  • Hi Max et al

    Just a quick update on my project's progress.

    I found the dynamic IP address configuration on my local network didn't work for some reason; static IP address works fine and is probably my preferred option, so no problem here.

    I use a VPN here to my remote site - Morconi connects to the Flex OK; I see the message in SmartSDR as Morconi's IP address connects and the unit sends a K.

    I am driving the Morconi with a WinKey unit; the audio from the Morconi goes into a soundcard on my PC - so I have sidetone, no problem.

    In use, Morconi works great! I listened to my transmitted signal from the remote station (about 10km away). All was good - great work Max!

    I have just one small issue which seems to have started since I implemented Morconi.

    If I start SmartSDR first, then put 5v power onto the Morconi unit and wait for it to connect - everything works fine.

    However if SmartSDR is started when Morconi is already powered up, the Flex will not put any power out. PTT works as expected OK but if I press Tune, or send CW from Morconi, or send CW from the Flex CWX function, no power output.

    To revert the Flex back to normal I have to switch it off (via the remote on/off function) and restart it.

    Then, I can only use Morconi successfully with the Flex if I power Morconi up after SmartSDRE starts.

    There is no Flex message to indicate TX inhibited. Any ideas please?

    Thanks

    John G4IRN
  • N5NHJ
    N5NHJ Member ✭✭✭

    Hi John.

    Thanks for the detailed update. I’m glad to hear that the interface is working well.

    If you’d like, we can investigate why the DHCP didn’t work. I need to understand a bit more about your network configuration to help with this.

    The "No Power" issue is something I've seen before. Don’t worry; this is a software glitch and is not related to the hardware or specifically to MORCONI. When a client (MORCONI, in this case) connects, the radio sends some information, including the address of the SmartSDR client that controls the radio.

    If this information is not available when the client connects (e.g. if SmartSDR is not up and running yet), it can be challenging to get that information and update the configuration. The result is that the radio goes into TX mode but has no power output (don't ask me why...).

    I've already sent a quick note to Erik KE5DTO about retrieving the Handle in an easier way.

    I can try to mitigate this issue when I have my radio to test with (waiting on the 8600).

    In the meantime, the only suggestion I have is to start MORCONI after SmartSDR.

    73, Max

  • KD0RC
    KD0RC Member, Super Elmer Moderator

    Hi Max, when you connect your Marconi to the radio, do you do a bind to the GUI client? Without the bind, several things won't work properly (RF power, CW speed, etc.).

  • N5NHJ
    N5NHJ Member ✭✭✭

    Hi Len, thank you for the suggestion.

    I do ensure that MORCONI is properly bound to the GUI client other ways, as you say, almost nothing works. The issue reported by John appears to be a recurring glitch in the radio's firmware rather than a problem with MORCONI. I've seen it and it has been reported several times in different situations.

    Apparently, if the client_handle is somehow incorrect, this is what happens.

    Rebooting the radio, indeed, resolves the issue and restores normal operation.

  • HA8RD
    HA8RD Member
    Hi Max! This little microcontroller is great, it works very well. I have a problem that I have one key and here is Dot and Dash, how do I connect it??
    73 DE Laci HA8RD
  • N5NHJ
    N5NHJ Member ✭✭✭

    Hi Laci.

    I'm not sure if I understand your question. MORCONI accepts any straight key, or paddle, or electronic keyer.

    You just need to connect your key or keyer to the input PIN of the microprocessor.

    Please ask a more specific question and I'll be happy to provide an answer. Also, please join the MORCONI groups.io list.

    73, Max

  • HA8RD
    HA8RD Member
    Yes, the question was not clear. Paddle keys have 3 wires. The teensy only has 2 wires, gnd and pin 1. Do I need a Winkeyer to convert it?
    73 Laci
  • N5NHJ
    N5NHJ Member ✭✭✭

    Hi Laci,

    MORCONI doesn’t include an internal keyer logic for several reasons:
    First, I wanted to keep the code clean and focused on its primary goal—communicating with the Flex. Additionally, everyone has their own preferred keyer, (I personally favor the C-MOS Super Keyer above all others), and it’s simple to connect the output of your keyer to the input of the MORCONI interface.

    However, if there’s significant demand for this feature, I’d be happy to consider adding it, along with other potential functions, in a "Deluxe" version with ****, display and other amenities.

    For now, I’ve chosen to keep the project straightforward and easy to build.

    Thank you for joining the MORCONI groups.io! I’ll share this response there as well.

    73, Max

  • HA8RD
    HA8RD Member
    Thanks Max! It's a great thing, so now I have sidetone, it was very careless to use the first key so I can't hear my own voice back. I use my radio remotely, so I want to add as few things as possible. I work with the help of the keyboard 90% of the contest program, but sometimes the elkey ​​is necessary. My station is 2 km away from the city.
  • N5NHJ
    N5NHJ Member ✭✭✭

    I'm happy it worked for you. Stay tuned for firmware releases in the next few weeks.

    Max

Leave a Comment

Rich Text Editor. To edit a paragraph's style, hit tab to get to the paragraph menu. From there you will be able to pick one style. Nothing defaults to paragraph. An inline formatting menu will show up when you select text. Hit tab to get into that menu. Some elements, such as rich link embeds, images, loading indicators, and error messages may get inserted into the editor. You may navigate to these using the arrow keys inside of the editor and delete them with the delete or backspace key.