New beta firmware 4.10 available!

112 views
Skip to first unread message

Jürgen

unread,
Aug 9, 2025, 5:14:52 AMAug 9
to Enigma touch
As always, it took longer than I thought -- but now the new firmware version 4.10 is available for beta testing.

The biggest changes are around enhanced USB functionality: The Enigma touch can now act as an "encrypting keyboard" on your PC; it can receive input text in USB serial mode; and it can process a set of simple commands to modify and check current key settings. You can also define and use a "custom Enigma" now, if you come across an unusual historic machine you want to simulate. And there are a few tweaks to usability and a bug fix -- please see the brief release notes below.

The new firmware can be downloaded at https://e-basteln.de/file/enigma/Enigma_Touch_FW410.elf, and an updated manual at https://e-basteln.de/file/enigma/Enigma%20Touch%20Instructions%202.1.pdf. The main change in the manual is a new chapter 4 to cover the enhanced USB functions. The subsequent chapter numbers have changed, hence the firmware update process is now described in chapter 6.

I would much appreciate your feedback, both on the firmware and on the manual: Does everything work as advertised? Any clarifications needed in the manual; any documentation or functionality which you would like to see added? I am ready to follow up with firmware 4.11 and another update to the manual quickly.

Many thanks in advance for your testing and feedback! Of course, please feel free to post comments or questions here.

Cheers,
Jürgen


FW 4.10, August 2025

- USB port can act as a keyboard (alternative to USB serial device)
- Text and command input via USB serial port
- Rotor wiring is output via USB serial (long press of Rotor key)
- Enigma N (NorEnigma) added to the model selection
- Enigma X (user-defined) added, defined via !X… USB commands
- Inactivity power-down after 15 minutes occurs only when running on battery power
- Lamps light for a minimum time also if sound is turned off
- Test: Further reduce misinterpretation of alpha keys as Modell/Rotor/Ring
- Bugfix: More than two UKW options are now offered for Enigma I, M3


Things that are still on the to-do list:

- Definition of plugboard settings via USB commands, including ways to set the more flexible "precursor" versions of the plugboard. I am still figuring out how command-driven plugboard settings and physical wirings can coexist without totally confusing the user...

- More/better message examples in section 2.3 of the manual. I have added a bit of text explaining the rotor letters vs. numbers translation which had caused some questions before, and have removed the "using last day's key settings" trap from the second example. But am still using the German and rather non-authentic test messages at the moment.

- Port the changes back to the German version of the manual.

Ronald Wells

unread,
Aug 9, 2025, 10:45:12 AMAug 9
to Enigma touch
Firmware updated, so far so good! Will update after some additional testing.

Jon Nall

unread,
Aug 9, 2025, 2:39:16 PMAug 9
to Enigma touch
I’ve successfully updated to 4.10 and the new features look good!

  • I am generally no longer able to reproduce Modell/Rotor/Ring being selected when pressing in between 2 keys on the keyboard.
    • If I press the pad of my index finger (not just the finger tip) in the center of the DXC key cluster such that I'm touching all 3 keys, I can get Modell to toggle. I'll leave it to you to determine if it's worth further improvements here. As for me, I find the current firmware perfectly usable.
  • I tried the new serial mode features including quite a few of the set(!)/get(?) commands and all work as advertised
  • I enabled the US keyboard mode and it worked as expected

This is a very nice update, thanks, Jürgen!

nall.

Ronald Wells

unread,
Aug 9, 2025, 2:39:39 PMAug 9
to Enigma touch
This is an awesome update, great job!!

Observations so far:

FW 4.10, August 2025

- USB port can act as a keyboard (alternative to USB serial device)
- holy crap this is an awesome idea, great job!  Seems to be working really well.

- Text and command input via USB serial port
    - this is working great, this is an awesome enhancement feature!!!

- Rotor wiring is output via USB serial (long press of Rotor key)
    - verified that the wiring for the currently selected rotors is output when long pressing the rotor button (only when the rotor was not already selected)

- Enigma N (NorEnigma) added to the model selection
    - i see this is here, haven't tried to validate that it's accurate (I have to do some research to figure out what this even is lol)

- Enigma X (user-defined) added, defined via !X… USB commands
    - This is another cool feature.  It will take me some time to play around with this.

- Inactivity power-down after 15 minutes occurs only when running on battery power
    - I love this fix!  Verfied that it stays on for more then 15 mins when plugged in.  I did have a weird situation where the enigma was plugged in but the charge light wasn't lit and it did shutdown.  I haven't been able to reproduce this yet though.

- Lamps light for a minimum time also if sound is turned off
    -verified that the lamps stay lit for the same amount of time when the sound is off as when the sound is on
   (took me a bit to understand what this fix was)

- Test: Further reduce misinterpretation of alpha keys as Modell/Rotor/Ring
     - this does seem to help a lot, occasionally i can still get it to misread, but it's pretty hard and basically have to be pressing two keys at once.

- Bugfix: More than two UKW options are now offered for Enigma I, M3
- I'm able to select the previously missing reflectors for the I and M3

One thing I noticed before this update was for the rotor long press the way the connection is
represented seems backwards to me.  Based on the wiring tables I've seen, and also the new output
to the terminal with the rotor long press, it seems like reversing the order would make it easier
when trying to validate the wiring against one of the tables:

              A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Rot3 I    E K M F L G D Q V Z N T O W Y H X*U S P A I B R C J

when trying to review the wiring from the display output instead of it being like this:
AE BK CM DF EL

It's
EA KB MC FD LE

Maybe I'm just weird, but it's a lot easier for me to verify these going from the
top line of the table to the rotor line.

Thoughts?

Suggestion on the plug board, how about if you can only program it if there are no wires plugged in?  Then if any wires get plugged in the programmed settings get cleared and the wires take over?

Can't say enough how awesome this update is!
Thanks,
Ron
On Saturday, August 9, 2025 at 4:14:52 AM UTC-5 Jürgen wrote:

Jürgen

unread,
Aug 9, 2025, 3:19:29 PMAug 9
to Enigma touch
Thank you both for the quick (and friendly!) feedback. :-)  Special thanks to Ron for the systematic tests!

Regarding the rotor wiring display on the front panel, I have gone back and forth about that when I implemented it... The current placement of the letters (contact labels) reflects where the contacts are physically located on the left and right side of the rotors. That seemed logical to me, especially when the three rotors are displayed side by side. But of course, when rotor wirings are written down (on paper in the NSA document, or also in the Enigma touch's USB log), it is customary to denote the right-hand, incoming side first, typically on top with the left-side outputs below it. And since we read from left to right, one would expect to find the "first" contact written on the left side in the rotor display -- just opposite from what I have implemented.

If there is a clear majority for one or the other orientation, I am happy to go with that. Or could there be some visual aid in the rotor displays to make it clearer that the notation is meant to reflect the physical arrangement? Maybe short connecting lines between the letter pairs, and line stubs continuing to the left and right to imply the "connection across all rotors"?

Ron -- your idea for resolving the plugboard conflict is exactly what I was tossing around! If that behavior appears logical, it's what I will implement. The asymmetry of not having a "!PB" command was bugging me... ;-)   Should a software-defined plugboard setting also deliberately not be stored and recalled after a power cycle, to avoid a situation where one switches on the Enigma touch a week later and has forgotten about the hidden plugboard connections? 

Thanks again for everyone's input!
Jürgen

Ronald Wells

unread,
Aug 9, 2025, 4:02:08 PMAug 9
to Enigma touch
Yes, I can see how it's difficult to decide how to display these connection settings.  I see some benefit to having the rotor letter first (the way you have it now) after having looked at this a little more.  When verifying the wiring you can just go across the table in the rotor column and the letters on the left should be in order as you cycle through them all.  Not sure if I'm making sense here.  I'm struggling a little more with the reflector though, as that isn't the case for it for some reason, I need to study this some more.

I figured that idea on the plug board had probably occurred to you already, and not having a !PB command is bugging me as well lol..   

Hmm.. good question... I think I would go ahead and save it.  

If someone is primarily using the plug board by programming it, rather than using the wires, it would be a major pain to have to re program it every time you turn it off.  I'd say 99% of the time if someone is mostly using it in a programmed way then they'll understand they have to reprogram it again if they want to change from what they were doing previously.

And if someone that normally uses wires instead programs the plug board and lays it down for awhile and later picks it back up the first thing they'd need to do is plug up the wires.  

So if you make it so that on power up if there are any wires connected or on detecting wires being plugged in while the power is on triggers a reset of the programed setting I think they'd be good to go.

This make any sense? lol.

Ronald Wells

unread,
Aug 9, 2025, 4:04:48 PMAug 9
to Enigma touch
Additionally, with the rotor wire display, I think the fact that you added the dump to the terminal feature this is probably not even worth worrying about anymore to be honest.

Ronald Wells

unread,
Aug 9, 2025, 4:24:10 PMAug 9
to Enigma touch
" you can just go across the table in the rotor column and the letters on "  this should have been go across the table row, not column.  

On Saturday, August 9, 2025 at 3:02:08 PM UTC-5 Ronald Wells wrote:

Jürgen

unread,
Aug 9, 2025, 4:41:52 PMAug 9
to Enigma touch
Good point about the reflector, Ron. The "right to left" logic does not apply for that one, since all its connections are on the right side anyway. In the rotor display I simply show all paired letters, and show them twice (so AX and XA both show up). That's different from the notation used in the USB log, which gives each pair only once, with the earlier letter in the alphabet coming first -- consistent with the  notation in the old key sheets. Maybe I should adopt that in the rotor display too, i.e. remove the duplicate, reversed letter pairs?

Also, you have a point regarding the stored plugboard settings. Having to re-program the virtual plugboard after every power-down would be a nuisance -- especially if one uses the Enigma touch on battery, so the automatic inactivity shutdown is in effect and no cable and PC are readily available to re-program. "Historically correct" usage of a plugboard Enigma would always involve some plugged connections anyway, so the usage scenario of leaving everything unplugged and expecting all connections to be straight through should not apply in practice.

I guess there should be a way to read the "virtual plugboard" settings from the front panel then, to support this type of stand-alone operation? Hmm, I am running out of mode keys...

Ronald Wells

unread,
Aug 9, 2025, 4:56:48 PMAug 9
to Enigma touch
Hmm. Looking closer at the rotor dump to terminal, I think there is some data missing for the reflector part?

UKW B     AY BR CU DH EQ FS GL IP JX KN MO TZ VW


          A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Rot3 III  B D F H J L C P R T X V Z N Y E I W G A K M*U S Q O
Rot2 II   A J D K S*I R U X B L H W T M C Q G Z N P Y F V O E
Rot1 I    E K M F L G D Q V Z N T O W Y H X*U S P A I B R C J
ETW 1     A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

UKW B is the reflector wiring, right?  From here: https://www.cryptomuseum.com/crypto/enigma/wiring.htm it should be :


Rotor      
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

UKW-B      Y R U H Q S L D P X N G O K M I E B F Z C W V J A T

This is also in line with what is shown on the Enigma Touch display.
All the groups in red seem to be missing?
Likely I'm just dumb and this is something I should understand at this point lol.

If I'm correct, wouldn't it make sense to just add the rotor to the table rather than showing it like a patch board definition?  i.e. like this:
          A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Rot3 III  B D F H J L C P R T X V Z N Y E I W G A K M*U S Q O
Rot2 II   A J D K S*I R U X B L H W T M C Q G Z N P Y F V O E
Rot1 I    E K M F L G D Q V Z N T O W Y H X*U S P A I B R C J
ETW 1     A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

UKW-B     Y R U H Q S L D P X N G O K M I E B F Z C W V J A T

On Saturday, August 9, 2025 at 4:14:52 AM UTC-5 Jürgen wrote:

Ronald Wells

unread,
Aug 9, 2025, 5:12:22 PMAug 9
to Enigma touch
Aaah..  this helps with my latest post lol.  I forgot that the reflector isn't like rotors, so D -> H implies H -> D for the reflector.  Figured I was being dumb! 

Maybe you could flash some message on the display on power up if the plug board is programed as a reminder?  then the user could just plug and unplug a cable to reset it or something if they really wanted to use the enigma with an empty plug board.

Also, I haven't checked yet, but does the rotor dump to terminal show both the rotor and beta or gamma wiring?  

Ronald Wells

unread,
Aug 9, 2025, 5:21:19 PMAug 9
to Enigma touch
I see that the beta and gamma rotors are shown in the dump!


" Maybe I should adopt that in the rotor display too, i.e. remove the duplicate, reversed letter pairs? "
I'm not sure how that would work?  Since there aren't always duplicate reversed letter pairs on the rotors (probably fairly infrequently in fact), right?


" I guess there should be a way to read the "virtual plugboard" settings from the front panel then, to support this type of stand-alone operation?" 
maybe, if there is a plug board program,  the display could show something like "re se t  p?" "cl ea r  p?"   then you can press Y to clear it or anything else to just go on?  
And just start as normal if there is no plug board program.

On Saturday, August 9, 2025 at 3:41:52 PM UTC-5 Jürgen wrote:

Jürgen

unread,
Aug 10, 2025, 2:51:31 AMAug 10
to Enigma touch
  • " Maybe I should adopt that in the rotor display too, i.e. remove the duplicate, reversed letter pairs? "
    I'm not sure how that would work?  Since there aren't always duplicate reversed letter pairs on the rotors (probably fairly infrequently in fact), right?
Ah, sorry -- I did not express that well. What I meant was, use the notation without duplicate pairs when showing the reflector in the rotor windows (i.e. in "rotor inspection" mode on the front panel.)

  • " I guess there should be a way to read the "virtual plugboard" settings from the front panel then, to support this type of stand-alone operation?" maybe, if there is a plug board program,  the display could show something like "re se t  p?" "cl ea r  p?"   then you can press Y to clear it or anything else to just go on?  And just start as normal if there is no plug board program.
I'll need to think about that a bit more. A guiding principle in the UI has been that the rotor display, keyboard and lamps should "stay in character" unless explicitly asked to take on a different function (via the mode keys). So I have avoided showing a startup message on the displays, or using the keypad for something other than text entry. 

But I agree that there should be some visual indication that the virtual plugboard is active, and some way to clear it even when you have no cable at hand. Maybe show a little plug icon in the lower left (where the first counter digit is in Enigma G mode)? And the plug settings could be cleared when you change to a different Enigma model (and actually make that choice active by leaving Modell mode)?

Jürgen

unread,
Aug 10, 2025, 5:20:59 AMAug 10
to Enigma touch
In my original post above, I forgot to mention one set of features which are still on the to-do list: Museum Mode (limiting user access to setup changes; option to connect a small printer to create "souvenir" message printouts?) and Attract Mode (auto-play lamp and rotor action when idle for a while, or when explicitly started). These are not forgotten, but discussions with the museum interested in this will take some more time.

Ronald Wells

unread,
Aug 10, 2025, 10:12:23 AMAug 10
to Enigma touch
On Sunday, August 10, 2025 at 1:51:31 AM UTC-5 Jürgen wrote:
  • " Maybe I should adopt that in the rotor display too, i.e. remove the duplicate, reversed letter pairs? "
    I'm not sure how that would work?  Since there aren't always duplicate reversed letter pairs on the rotors (probably fairly infrequently in fact), right?
Ah, sorry -- I did not express that well. What I meant was, use the notation without duplicate pairs when showing the reflector in the rotor windows (i.e. in "rotor inspection" mode on the front panel.)

Ahh, I see.  For me I think I'd like it better if they're kept since they're all in the tables, and if I'm going through trying to verify the wires if all of the combinations are there then I don't have to pay attention to the second letter of the pair (I can just go through the row for the rotor and the letter I'm trying to match is the first letter in each pair in the window.  Make sense?


  • " I guess there should be a way to read the "virtual plugboard" settings from the front panel then, to support this type of stand-alone operation?" maybe, if there is a plug board program,  the display could show something like "re se t  p?" "cl ea r  p?"   then you can press Y to clear it or anything else to just go on?  And just start as normal if there is no plug board program.
I'll need to think about that a bit more. A guiding principle in the UI has been that the rotor display, keyboard and lamps should "stay in character" unless explicitly asked to take on a different function (via the mode keys). So I have avoided showing a startup message on the displays, or using the keypad for something other than text entry. 

Yes, I was thinking of this in the back of my mind, but I figure since having a programmed patch board is already out of character then it didn't seem wrong.  Having it point out that the machine isn't in character (if it's starting up and there's a programmed patch panel) seems right.  But I totally get what you're saying.


But I agree that there should be some visual indication that the virtual plugboard is active, and some way to clear it even when you have no cable at hand. Maybe show a little plug icon in the lower left (where the first counter digit is in Enigma G mode)? And the plug settings could be cleared when you change to a different Enigma model (and actually make that choice active by leaving Modell mode)?

That works too!

Curtis Vaughan (ACSS)

unread,
Aug 10, 2025, 12:05:39 PMAug 10
to Enigma touch
On my Linux system, I have to run the Programmer as root as it won't otherwise allow me access to the usb1 port. (maybe I just need to add my username to some group for such access?)
Regardless, it looks like I could instead use the CLI version.
I wonder if this would be the right command?
sudo ./bin/STM32_Programmer_CLI -c port=usb1 -v -w ../../Enigma_Touch_FW410.elf

Curtis Vaughan (ACSS)

unread,
Aug 10, 2025, 1:01:44 PMAug 10
to Enigma touch
Ok, the solution was to do the following:


cd ../STM32MPU_workspace/STM32MPU-Tools/STM32CubeProgrammer-x.y.z/Drivers/rules

sudo cp *.* /etc/udev/rules.d/


However, after running the STM Gui and flashing ET, the disconnect button doesn't work...... Fortunately, forcing STM to close the ET shows the latest FW. YEAH!

Jürgen

unread,
Aug 10, 2025, 1:36:15 PMAug 10
to Enigma touch
Hey, great you got this to work, and thank you for sharing! I have only used STM32CubeProgrammer (who came up with that name?) under Windows myself. Good to know that their Linux version largely works as advertised too. 

Jürgen

unread,
Aug 12, 2025, 4:37:55 AMAug 12
to Enigma touch
Hot from the "features nobody has asked for yet" department: The rotor wiring display now also indicates the turnover positions where a rotor will pull along its left neighbor. Little arrows pointing to the left, which move along as you turn the rotors. (Shown in the wiring view only; see the attached photo.)

I am working on firmware 4.11 on the side and have incorporated your feedback. Virtual plugboard wiring via !PB works now, and with the little plug indicator in the display and the automatic reset once you plug a physical wire, I don't find it too confusing. Output lines via USB serial are terminated with CR+LF. Also added the option to append comments to any command line, delimited by ';'. This might be useful for command sequences stored in a text file -- thanks for the idea, Bart!

I will wait a bit more for further ideas or bug reports, and then release 4.11 as the "official" new firmware. Thanks again for everyone's input!
Jürgen

turnover.jpg

Ronald Wells

unread,
Aug 12, 2025, 11:37:40 AMAug 12
to Enigma touch
Very cool!  Already excited to get the next update just days after the last one!
Reply all
Reply to author
Forward
0 new messages