TEMU 4.5.0
TEMU 4.5.0 was released on 2025-07-24.
TEMU 4.5.0 is a feature release.
Features
-
Add a global per user TEMU configuration system. A config file is stored in
~/.config/temu/config.ymal
. An API to access configuration data is available intemu-c/Support/Configuration.h
. -
TCP/IP NAT bridge. A model to route physical network TCP connection data into simulated Ethernet in TEMU has been created. The bridge should be seen as an early version, and a number of known limitations at present.
-
Add
temu_memoryWritePhys16()
function. -
Add ARP protocol API, useful when implementing your own Ethernet models.
-
Support live capture of TEMU ethernet links using named pipes / FIFOs. This allows for live tracking of simulated network traffic via Wireshark (on the same host).
Bugs
The following bugs have been fixed:
-
P2020 eTSEC MAC model:
-
Incorrect TX/RX descriptor reading related to endianness of descriptor words.
-
Preamble length adjustment incorrect for TX transactions.
-
Missing use of high bits for descriptor and data buffers.
-
-
Allow user to set the
PHY_ID
properties of the GenericPHY model. -
P2020 PCIe issue related to un-mapping memory ranges during re-initialization.
-
P2020 PCIe issue related outbound window address matching.
-
P2020 PCIe logging level was info for most messages that should be trace level.
-
Unclean shutdown of a simulator could result in PCAP captures not being complete.
Limitations
The NAT bridge works by establishing a number of external listening sockets. When a connection is made by the user, the bridge starts an internal connection using the TCP protocol by constructing and sending Ethernet frames in the simulated network.
When the inside connection has been established the socket opened earlier will transition to a reading state. A separate thread manages all incoming data, which is forwarded, split in Ethernet frame sized chunks. Incoming Ethernet frames will be sent via the socket as is, by transferring TCP payload as is. This means that the NAT bridge does not do address rewriting, but rather maintains two connections on different sides of the network link.
The NAT bridge has a number of limitations at the moment:
-
Only TCP/IP is supported. UDP is not supported yet.
-
TCP connections are not supported in outbound direction. I.e. TCP/IP connect calls on the target will fail if they are routed to the outside network.
-
New connections do not automatically start and ARP exchange. It may be necessary to prime the connections using the
nat.do-arp-request
command if the target does not initiate with ARP announcements. -
Target application initiated FIN are not propagated by closing the outside channel.