# CHANGELOG ## 3.11.28 2026-10-12 ### Improvements - **Windows: the driver's protection against stack overflows now uses a random value on every start.** It used a fixed value that could be read from the driver file, which weakened the protection against exploiting a memory error. - **Refused privileged driver requests are now reported.** When a program without administrator rights (Linux: without root) asks the driver for a privileged function, Linux writes a line naming the program and its process ID to the kernel log (syslog/journal), and Windows records it in the driver trace. The first ten refusals are logged, then every thousandth. - **The release notes are now part of every download:** `CHANGELOG.md` is included in the Windows zip archive, in every Linux archive and on the CD images, and every security fix in it states its severity. ## 3.11.27 2026-10-12 ### Bug Fixes - **Windows: a PrimuX PCIe card that fails or is removed while in use could freeze the whole PC.** The driver kept polling a card that only answered with all-ones. It now recognises the card as gone, logs it once and stops servicing it. Applies to the PCIe, S0 and S2M (EXAR) adapters. - **SIP with a PrimuX PCI/PCIe card: the driver took system memory at interrupt level.** On Windows with Driver Verifier enabled this produced a bluescreen (0xC4); on Linux it allocated memory that may sleep while holding a spinlock. The SIP stack now takes this memory from the driver's own heap. - **SIP/SRTP: calls from a peer that sends a Master Key Identifier (MKI) in its `a=crypto` line had no audio.** Every packet failed authentication; they are now decrypted. - **SIP/SRTP: a very large key lifetime in `a=crypto` (for example 2^48) was mis-parsed** on platforms with a 32-bit `long`, including the Windows driver. It is now read as a 64-bit value. - **Configuration program: reading a driver message could copy more than the caller's buffer holds.** The copy is now limited to the buffer size. - **Linux installer: a failed service installation was reported as success.** Setup now exits with code 6 when it cannot install the driver's service. - **Linux installer: on a system without kernel headers, the console tools were installed without the `capi*.h` headers and with broken `libcapi20` links.** The installer drops the driver option there, and these files were wrongly tied to it; they are now always installed. ## 3.11.26 2026-10-09 ### Bug Fixes - **Windows: disabling or removing the PrimuX root device in Device Manager could crash the system** while a PrimuX USB adapter was connected (bluescreen 0x18). The driver freed the adapter's device object while USB requests were still in flight. The adapter now stays intact until Windows removes it itself. - **Windows: after unplugging and quickly replugging a PrimuX USB adapter, a configuration change in the following second could stop the adapter.** The old, already removed device no longer interferes. - **Fax over T.38: a fax frame that the remote gateway reported as damaged was accepted as received.** Error correction (ECM) now requests it again, so the page no longer contains corrupted lines. - **SIP: in rare cases the driver used uninitialised memory to choose the source address**, and a log entry could contain a few bytes of it. The address is now only used once it is known. - **Silent update (`/q`) left the previously installed tools behind:** the configuration program, tracer and fax service tools kept their old version and lost their Start-menu entries (Linux: console tools). A silent update now updates the tools that are installed. ## 3.11.25 2026-10-08 ### Security - **Fax over T.38: a fax frame from the remote side could crash the system** *(versions with T.38 fax, since 3.11.8; on Windows a bluescreen, osTicket #20535; severity: high — reachable from the remote fax peer, stops the system)*: an error-corrected (ECM) fax frame that arrived while no page was being received -- before the first page or after a page had ended -- made the driver access a page decoder that did not exist. Such frames are now discarded. - **Fax over T.38: a too-short ECM frame put kernel memory into the received fax page** *(since 3.11.8; severity: medium — discloses kernel memory into a received fax)*: the driver always copied a full frame's worth of data, whatever length actually arrived, so the rest of the page segment was filled with leftover kernel memory (on ISDN fax: bytes of an earlier frame). Only the received bytes are used now and the remainder is filled with zeros. ## 3.11.24 2026-10-08 ### Bug Fixes - **SIP: an IPv4 trunk could not register when the registrar's name also has an IPv6 address** (osTicket #20505): REGISTER was sent to a truncated IPv6 address instead of the IPv4 one. An IPv4 trunk now uses the IPv4 address. - **Windows: unplugging a PrimuX USB adapter could crash the system**: the kernel stack could overflow, and the driver could still use the removed adapter afterwards. Both are fixed. - **Windows: a PrimuX USB adapter that was unplugged and plugged back in quickly stayed silent** while Device Manager showed it as working. It now works again after the replug. - **Windows: a removed or reconfigured PCI adapter is now stopped before Windows switches off its bus access**, so the driver no longer accesses a card that is gone. - **Windows: a PrimuX S0 II that does not answer (defective, or removed) no longer hangs the driver** at startup or in the interrupt handler. - **PrimuX USB II firmware**: after the computer resets the USB bus, the adapter now recovers without being unplugged, including when the bus is reset during a call. A rejected control request no longer shifts all later answers by one. A repeatedly selected interface no longer writes past a firmware buffer. ## 3.11.23 2026-10-06 *Version 3.11.22 was not published: a check in its release build stopped it. 3.11.23 contains everything listed below; the only change since is in the release build itself.* ### Important: please read before updating - **Linux: only root and members of the new group `capi` may now use the CAPI device.** Until now `/dev/capi20` and the connection devices under `/dev/capi/` could be read and written by every local user. The installer creates the group `capi` and says so when it does. **A CAPI application that runs as an ordinary user stops working after the update until that user is added to the group:** `usermod -aG capi ` (then log in again or restart the service). - **RemoteCAPI now authenticates its clients** *(see Security)*. Two passwords can be set on the server: `rmtcapi --set-access-password` for CAPI use and `rmtcapi --set-admin-password` for remote configuration. **Remote configuration is switched off until an admin password is set.** As long as no access password is set, CAPI use stays open as before (transition mode); the installer warns when RemoteCAPI was in use and no access password is set. Set an access password, and enter the same passwords on the clients. ### Security - **Windows: a single oversized UDP packet from the network could overwrite kernel memory** *(all versions since 2019; severity: critical — reachable from the network without authentication, writes kernel memory)*: every UDP socket of the SIP stack accepted datagrams of up to 8192 bytes into a 4096-byte buffer. One datagram of 4097 to 8192 bytes to any open SIP, RTP or T.38 port was written past the end of the buffer — before any authentication. Oversized datagrams are now dropped before anything is copied. - **Windows: SIP over TLS could write past a kernel buffer when sending large records** *(versions with SIP over TLS; severity: high — reachable from the network, writes kernel memory)*: an outgoing TLS record larger than the 4352-byte send buffer — for example a long certificate chain, or SIP messages queued while the TLS handshake was still running — was written up to 12 KB past it. Large records now go out in several pieces. - **SIP: a flood of incoming calls could exhaust the driver's memory and crash the system** *(all previous versions; severity: high — reachable from the network without authentication, stops the system)*: an unauthenticated peer sending INVITEs faster than they expire used up the memory the whole driver shares. Each trunk now admits only as many calls as it can serve and answers the rest with "503 Service Unavailable". - **RemoteCAPI had no authentication** *(all previous versions; RemoteCAPI is optional and not started by default; severity: high — anyone who can reach the port can use CAPI)*: anyone who could reach TCP port 4711 could use the adapters and read and change the configuration, including SIP passwords. Clients now log in with a challenge-response procedure, the server stores only derived keys and locks out an address for 10 minutes after 5 failed attempts, and after the login every message is encrypted and integrity-protected (ChaCha20-Poly1305). Passwords never cross the network. Two missing length checks between client and server are also fixed. - **SIP passwords and the TLS private key could be read by every local user** *(all previous versions; severity: medium — local users only, discloses credentials)*: the driver handed its complete configuration to any program that asked for it, and on Windows the stored configuration was readable by all users. Programs without administrator/root rights now receive the configuration with these secrets removed, and on Windows the full configuration is kept in a registry key only administrators can read. **If untrusted users have access to the machine, change the SIP passwords and the TLS key after updating** — copies made before the update (registry backups, exported configurations) still contain them. - **The driver trace could be switched on and read by every local user** *(all previous versions; severity: medium — local users only, discloses call content)*: with the right setting the trace contains the audio and fax content of every call and complete SIP messages. Switching it on and reading it now requires administrator/root rights — start `ctracer` as administrator (Windows) or root (Linux). - **A local program could make the driver read or write beyond its buffers, or crash the system** *(all previous versions; severity: medium — local programs only)*: a malformed CAPI message could make the driver send kernel memory out on a B channel; an oversized CAPI registration, or many registrations together, crashed the machine or exhausted its memory; a malformed configuration could hang a CPU. These are now refused with a CAPI error. - **Windows driver robustness** *(severity: low — needs unlucky timing or unloading the driver)*: several defects that could crash the system under unlucky timing or on unload are fixed — requests to the driver during a configuration change could use an adapter that was being removed; network requests could be accessed after they had been freed; deferred completions could corrupt a list on multi-processor machines; plugging in a PrimuX USB adapter could crash a system running Driver Verifier; and memory was left behind each time the driver was unloaded. ### Bug Fixes - **3.11.19, 3.11.20 and 3.11.21 reported themselves as version "3.11.0"** — in the trace header, the SIP User-Agent and the CAPI manufacturer string. This version reports its correct number again, and a release check now prevents it from recurring. - **RemoteCAPI did not work at all** *(3.11.5 – 3.11.21)*: the server accepted connections but never answered. Also fixed: `rmtcapi -i` installs the Windows service again, the Linux autostart works and survives updates, and console mode accepts bind addresses again. - **Linux 32-bit: the driver did not build during installation** *(recent 3.11 versions)*: it needed helper functions that 32-bit kernels do not provide. They are now part of the driver. - **Linux: after a kernel update the driver did not come back**: on systems with automatic kernel updates CAPI stayed down after the next reboot. The driver is now rebuilt automatically at start when it is missing for the running kernel. - **Linux: all PrimuX programs reported process ID 1**, which broke their protection against running twice. - **Received faxes without error correction were always answered "retrain" (RTN), however clean the page was** *(3.11.5 – 3.11.21)*: the sending machine then repeated or gave up, although the page had arrived intact. Good pages are confirmed again, and a page is now judged by its bit errors, so a damaged page is answered RTN instead of being confirmed. - **Fax (T.30) timing now follows the standard**, which fixes failed and aborted transmissions with some fax machines and gateways: the timers T1 (35 s), T2 (6 s) and T5 (60 s) were too long or measured the wrong way, and T4 is now 4.5 s, the value T.30 allows for slower answering machines and gateways; commands are now repeated three times and the call then ends properly with DCN; the pauses between signals are 75 ms as required (they were up to 659 ms). - **Fax over T.38 without error correction**: a dense multi-page fax failed at page 2 (error 0x3318), and pages were sent in a different coding than announced. Both are fixed. - **Fax reception is more robust** across the full range of signal levels: the receivers now have automatic gain control and improved carrier and timing recovery, and short V.17 trainings are received reliably. - **Windows: fax over SIP/T.38 lost data during error-correction bursts** (a T.38 fax could end with nothing received), and the timing of the virtual B channel was too coarse, which broke faxes over a loopback or G.711 connection. Both are fixed. - **SIP behind NAT**: incoming calls are now answered to the caller's actual address; the trunk re-registers immediately after learning its public address (inbound calls used to fail for up to 95 % of the registration period after every start); media goes to the peer's public address when its SDP names a private one; keep-alives are sent every 15 s instead of 30 s; the digest nonce counter restarts at 1 for every new challenge (RFC 7616); and a missing source address is reported instead of sending 0.0.0.0. - **Windows SIP**: repeated configuration changes leaked connection resources; the 32-bit driver could crash when a SIP session timer fired or a burst of TCP/TLS data arrived. - **PrimuX USB adapter (Windows)**: a single failed transfer no longer stops all later configuration writes to the adapter, and the adapter no longer takes a lock at too high a priority level when a PCI card is installed in the same machine. - **Configuration utility**: the SIP connection test now removes its test registration when it is done (it stayed at the registrar for up to 60 s and could receive real calls); a warning appears when more SIP channels are configured than the licence keys grant; several German menu labels showed the wrong text; reading a configuration repeatedly no longer leaks memory. - **Installer**: a failed installation now states the reason and the location of its log, also in a silent installation (`/q`). - `capi2032`: `GET_MANUFACTURER` and `GET_PROFILE` no longer return uninitialised bytes; the tracer's About box shows the version and build. ### New Features - **Linux on ARM64 (aarch64)**: console and GTK3 installers; `ctracer` and the monitoring service run there too. The monitoring service now always listens on its fixed port 4243 (the unused SLP announcement is removed). ## 3.11.21 2026-09-28 Versions 3.11.19 and 3.11.20 were never released: their release builds failed after the version numbers had been assigned. 3.11.21 contains everything listed below and nothing else. ### Security - **Windows: any local user could read and write kernel memory through the CAPI device** *(all previous versions; severity: high — any local user gains full control of the system)*: eight maintenance functions of the driver on Windows had no privilege check, among them reading and writing kernel memory, writing the adapter configuration and loading DSP firmware. Because every user may open the CAPI device, that amounted to a full local privilege escalation. These functions now require administrator rights, as they always did on Linux, and the kernel-memory functions are no longer part of a shipping driver at all. Ordinary CAPI traffic is unaffected and still works for unelevated applications. - **Malformed messages from the ISDN network, from a remote fax machine or from a CAPI application could make the driver read or write beyond its buffers** *(all previous versions; severity: high — reachable from the ISDN line and from a remote fax machine)*: a systematic review of every parser in the driver, supported by fuzz testing, found and fixed defects in D-channel signalling (DSS1, 1TR6, the QSIG/ASN.1 supplementary services such as call transfer, name display and advice of charge), in the T.30 fax protocol, in X.75, and in the CAPI message parsing of both the driver and `capi2032`. The consequences ranged from kernel memory being passed on to an application, to a system crash, and in a few cases to a write past a kernel buffer. Several of these can be reached by the remote side of a call. Receiving automatic gain control (AGC) wrote past its buffer as soon as an application switched it on; it now works as intended. - **Linux: the installer now verifies its payload before installing anything** *(new; changes the exit code of unattended installations)*: `data.zip` is checked against a digest compiled into the installer and against Gerdes AG's code signature shipped next to it. A payload that does not match, or whose signature is missing or invalid, is refused before anything on the system is changed; an unattended installation then ends with an error code instead of installing. The installer log is also no longer written to a fixed name in `/tmp`. ### Bug Fixes - **Calls on a Deutsche Telekom SIP trunk were intermittently rejected with "403 Forbidden", typically some time after a reboot** *(all previous versions)*: Telekom distributes its SIP servers through DNS and hands out a different one from time to time. The driver looked the provider up afresh for every call, so a call could reach a server at which the trunk was not registered, and that server refused it without asking for credentials. The driver now sends calls to the server the trunk is registered with, as the provider specifies in its registration response (RFC 3608 Service-Route). - **A call cleared by the network reported "protocol error layer 1" (0x3301) instead of the network's actual cause**: for example, a call rejected with "incompatible destination" reached the application as 0x3301 although layers 1 and 2 were up throughout. `DISCONNECT_IND` now carries the network's cause. A fax that failed in T.30 and was then cleared normally still reports 0x3301, as before. - **Windows versions before Windows 10: the installer installed no driver at all, and reported success**: it looked for its tools in a folder that nothing creates, so every driver installation step failed. The path is corrected, and a failed driver installation is now reported as a failure. - **RTCP quality reports are now sent throughout the call**: the calling side sent its reports only together with the final BYE, and the interval was a fixed 10 seconds. Both sides now report during the call, at the randomised interval RFC 3550 prescribes. - **The trace tool's text export was missing every SIP message** *(since 3.11.5)*: only the line `SIP-TX` or `SIP-RX` appeared, without the message itself. Text exports show the full SIP messages again, including those of traces recorded with older drivers. ### Improvements - **The trace now says when a fax failed because the connection stopped delivering audio**: when a SIP trunk stops relaying media partway through a fax, the fax ends with 0x3311 ("remote station is no fax G3 machine"), which points at the wrong end of the call. The reported reason is unchanged, but the trace now shows how many media packets arrived and how long ago the last one was, so this case can be told apart from a genuine fault at the remote station. - **The trace tool shows RTP and RTCP records** that it previously skipped, so media problems can be analysed from the trace alone. ## 3.11.18 2026-09-07 ### Bug Fixes - **On Linux with systemd, nothing could reliably start after the CAPI driver, and the failure looked like a broken driver** *(all previous versions)*: the unit the installer creates for the driver, `primux.service`, was declared `Type=simple`. systemd treats such a unit as started the moment it launches the load script — not when the script has finished — and immediately goes on to whatever was ordered after it. But that script is what loads the driver: it inserts the kernel module first and creates `/dev/capi20` only afterwards. So `After=primux.service` ordered against the launch, not against the device. Anything a customer had ordered behind the driver — a trace capture started at boot, a CAPI application run as a service — could therefore start too early, find no CAPI device, report *"Kein oder ungültiger CAPI Treiber installiert!"* and exit. Starting the very same thing by hand a moment later always worked, which makes it look like a fault in the driver and is not one. The unit is now `Type=oneshot`, so `Requires=`/`After=primux.service` mean what they read like. Measured on a test machine, a service ordered after the driver found the CAPI device in **none** of 20 attempts before the fix and in **all 20** after it. The corrected unit is written on the next installation or update. - **An update could install over a driver it was unable to replace, and still report success** *(all previous versions; changes the exit code of unattended installations)*: the kernel module cannot be unloaded while any application still holds the CAPI device — the fax service, the trace tool, a CAPI application, a remote CAPI client. The installer asked for the unload, ignored whether it had worked, and carried on: it copied the new files, restarted the driver — which does nothing when the module is already loaded — and confirmed the module was present, which the *old* module satisfies just as well as a new one. The result was new files on disk, the previous driver still running in the kernel until the next reboot, and a successful-looking installation. A fix installed this way appears not to work. The installer now verifies that the old module has actually gone. If it has not, it names the situation, asks you to close all CAPI applications, and offers to retry; if the driver still cannot be replaced it **stops without changing anything**, rather than installing over it. **Please note for automated deployments:** a silent installation (`-q` / `-s`) that ran into this used to report success and is now refused with exit code **4**. If your automation installs while CAPI applications are running, it will now report the error instead of quietly leaving the old driver in place — close the applications, or reboot, before installing. ## 3.11.17 2026-09-04 ### Bug Fixes - **A SIP provider whose authentication challenge we could not read left the trunk permanently unregistered, and it looked like wrong credentials** *(all previous versions)*: the driver never read the `algorithm` field out of the provider's challenge. Three consequences, all of which end in the same endless "401 Unauthorized" with nothing anywhere naming the cause. A challenge asking for `MD5-sess` could not be read **at all** — the whole response was discarded, so the trunk never registered. A challenge listing more than one protection quality, for example `qop="auth,auth-int"`, matched neither of the two values the driver looked for, and it silently computed the unprotected form the provider then rejected. And a challenge asking for an algorithm we do not have — `SHA-256`, which carriers are beginning to require — received a confident MD5 answer labelled as MD5. All three are fixed: the algorithm is read, a list of protection qualities is handled, and a challenge we cannot answer is now **refused with a clear line in the trace** instead of being answered wrongly. Note what that last part does and does not mean: `SHA-256` and `SHA-512-256` are still **not implemented**, and `auth-int` is not either. A provider requiring one of them will still not register — but the trace now says so, instead of looking like a password problem. - **Activating a configuration left registered applications silently deaf, and now says so** *(behaviour change)*: activating a configuration in the configuration utility tears down and rebuilds every controller. Since 3.11.9 the driver tried to carry a registered application's call acceptance across that rebuild. That is no longer done — the supported procedure has always been to stop the applications, change the configuration, and start them again, and a half-restored application that looks alive is worse than one that is plainly gone. CAPI 2.0 gives the driver no way to tell a registered application that its controller was rebuilt, so the configuration utility now **warns before activating** whenever applications are still registered, naming how many, and asks whether to continue. Nothing is shown when no application is registered. If you activate anyway, the applications will not take calls until they are restarted. ### New Features - **The trace tool can now start a new file by itself** — `--rotate-size` (for example `100M`), `--rotate-time` (for example `1h`), or on demand by sending it a `SIGHUP`. This matters on a machine that reboots: with `-z` or `-b` the archive only becomes readable once the tool has stopped cleanly, so an unexpected restart used to lose the entire trace rather than its tail. Every completed file is now a valid archive on its own, complete with its own header, so a restart costs at most the file that was open. `logrotate` cannot do this — the trace file is opened once and never reopened, and the customary `postrotate killall -HUP` used to **destroy** the trace, because the signal was not handled and simply killed the tool. It now switches files instead. Two things to know: the size limit counts trace volume, not the size on disk, so a compressed archive comes out smaller than the limit; and there is **no automatic deletion** of old files — rotation writes them, housekeeping is yours. ### Improvements - **Dialogs in the configuration utility now say what the buttons do**: a question that used to be answered with "Ja" and "Nein" now offers "Speichern" and "Verwerfen", and longer messages are laid out with the question first and the explanation beneath it rather than as one block of text. - **Text that appeared in German on non-German installations is now translated** *(all previous versions)*: 37 pieces of text in the configuration utility and 8 in the trace tool had never reached the translation catalogues, so they showed the German original in English, Spanish, French, Italian and Dutch installations. The TLS and certificate settings were affected worst, as the newest part of the interface. All of them are translated now. ## 3.11.16 2026-09-04 ### Bug Fixes - **Switching T.38 off broke calls to providers that require it, in both directions** *(all versions in which T.38 could be switched off)*: when the "T.38 deaktivieren" option was set and the provider asked to switch a call to T.38, the driver answered with a message that did not match the request — it offered voice where T.38 had been asked for. Worse, it then stopped sending and accepting audio itself, while telling the provider nothing had changed. The result was a silent call that the provider hung up after about half a minute. The request is now refused properly, and the voice call keeps running. Note that a provider which insists on T.38 will still end the call — with T.38 switched off there is nothing to fall back to. On such a trunk, leave T.38 enabled. - **The driver could crash when a provider offered T.38 on a call that is not a fax** *(all versions with T.38 active)*: some gateways mistake modem or voice tones for fax tones and ask to switch the call to T.38. On a call that carries data — a modem connection, or a fax where the application rather than the driver runs the fax protocol — the driver went on to treat it as one of its own fax calls. On Windows this ends in a blue screen. The call type is now checked before anything is switched, and such a request is refused. - **Every T.38 fax lost about 2.8 seconds at the start on some providers**: the request to switch a call to T.38 was sent roughly ten milliseconds after the call was accepted. Providers whose equipment still considers the call setup in progress answer that with "491 Request Pending", and the standard then requires waiting two to four seconds before asking again. The request now goes out half a second after the acknowledgement, which is the round-trip time the standard itself uses. - **A T.38 fax could report the end of a page before the receiving side had finished it**: the driver sends fax image data at the speed of the negotiated modem, but it was allowed to run up to one and a half seconds ahead of that speed at the start of every block. It then announced the end of the page as soon as it had finished sending, rather than when the page had actually been transmitted — so on the far side, which has to play the page out to a real fax machine in real time, the end-of-page message could arrive while the page was still being printed. The head start is gone. Whether this is what caused a specific report of faxes failing at 100 % is not yet confirmed; that needs a measurement on the affected line. - **A request for a fax or data protocol the adapter does not provide was reported as successful**: an application asking to open a connection with a protocol this driver has no support for received a success confirmation instead of an error, and then waited for a connection that was never going to be established. It now receives the proper error code. ## 3.11.15 2026-08-31 ### Bug Fixes - **The PrimuX Monitor's context menu did nothing** *(all previous versions)*: right-clicking an entry in the device tree offered "Einstellungen", "Entfernen" and "Überwachen", and none of the three had any effect. The check mark beside "Überwachen" could not be cleared either — it was being set again on every screen refresh — and on a German Windows the umlaut in that entry was displayed incorrectly. The menu had never been finished. Rather than leave controls that do nothing, it has been removed; the tree now behaves like an ordinary tree. ## 3.11.14 2026-08-31 ### Bug Fixes - **Some programs in the Windows installer were not digitally signed** *(all previous versions)*: code signing is applied per program in our build, and four of the twenty programs and libraries in the Windows package had never been included in it — the PrimuX Monitor (`capimon.exe`), the Fax Service Provider (`primuxfsp.dll` and its 64-bit counterpart) and its configuration tool (`fspconfig.exe`). Everything else — the drivers, the CAPI libraries, the configuration, the tracer and the installer itself — already carried our signature. All twenty are signed now, as are the diagnostic tools we hand out with support cases. ## 3.11.13 2026-08-26 ### Bug Fixes - **A SIP trunk set to network adapter "Automatisch" could fail to register on a machine with more than one network**: the trunk sent its REGISTER, got nothing back and retried until it reported a timeout, while other trunks on the same machine — same port, same moment — registered normally. The trunk looked misconfigured, and a wrong password was the obvious first suspicion, although its credentials were correct. The cause is the binding: a trunk on "Automatisch" listens on *every* local address, a trunk with an adapter selected listens on that adapter's address only, and on a machine with more than one network both end up on port 5060 with overlapping claims. Windows then delivers the incoming answers to neither of them. Measured on an affected machine's own network capture: **none of 15 answers** reached the trunk on "Automatisch", while **all 8** reached the two trunks that had an adapter selected. The driver no longer opens a second, all-addresses endpoint beside an existing one on the same port; the trunk that comes up later shares the endpoint that is already there. The same rule now applies to the TCP endpoint the driver keeps for SIP messages too large for UDP — with one exception: a trunk using TLS never shares an endpoint that accepts unencrypted connections. **Please note:** as a consequence, a trunk on "Automatisch" now uses the network adapter of whichever trunk opened that port first. If your trunks must use different adapters, select them explicitly. - **The driver could announce a local address to the provider that the provider cannot reach**: on a machine with more than one network, the address a trunk puts into its SIP messages — and therefore the address answers come back to — was not derived from the system's routing at all. The driver simply used the network adapter that had been registered most recently, regardless of where it was sending. With a second network present (a VPN, a management network, a second card) that is frequently the wrong one, and answers are then directed at an address the provider has no route to. The driver now asks the operating system which local address actually routes to the destination. On current Windows versions, where the routing table is no longer readable from a driver, it falls back to the configured default gateway and matches it against the local addresses by network mask. - **Reconfiguring one SIP trunk could disturb another**: trunks share their transport internally, and the list of transports belonging to a trunk was stored inside that shared object instead of with the trunk itself. With more than one trunk configured, the list therefore belonged to whichever trunk had been set up last, so a change to one trunk could leave another unable to find a transport that was still listed for it. Each trunk now keeps its own list. ## 3.11.12 2026-08-22 ### Bug Fixes - **The Linux driver could not be compiled on a number of current distributions** *(affects earlier 3.11 releases, which distributions depended on the kernel)*: the driver's kernel-interface file is compiled on the customer's own machine, so neither our build nor our CI ever compiled it — and ten of its kernel-API checks had quietly rotted. RHEL and CentOS 8 could not build at all; neither could any kernel below 5.15 without a vendor backport, which includes RHEL 8, Ubuntu 20.04 and Debian 11; a fully updated Ubuntu 20.04 failed for a second, unrelated reason; and openSUSE Leap 15 failed out of the box with its default compiler. One of these had already been fixed once, in 2020, and was silently lost again. The driver is now measured across 17 distribution containers and compiles and links cleanly on every kernel from CentOS 5 (2.6.18, 2007) through Debian 13 (6.12, 2025). That matrix now runs as a release gate, so the range cannot erode unnoticed again. - **Installation failed on CentOS Stream 10, Ubuntu 24.04 and Fedora** *(affects 3.11.11 and earlier)*: on kernels built with Indirect Branch Tracking the module build aborted outright. The 64-bit driver is now built with the control-flow protection those kernels require. - **A failed Linux installation deleted the evidence needed to diagnose it** *(all previous versions)*: every failure path removed `/usr/lib/primux` entirely — including the generated Makefile, the kernel-probe log and the staged driver object. That was right for a half-configured installation and wrong for the failure customers actually hit, a kernel-module build error, which happens before any system file is touched: the rollback undid nothing and destroyed everything needed to understand or retry the install. The directory is now left in place after such a failure. - **Every rejected outgoing call leaked memory** *(all previous versions)*: a call rejected by the driver before it reached the network — an empty user part, a missing destination, an unknown recipient — released its SIP message incorrectly, so neither the message nor its memory pool was ever freed. Calls that connect normally were never affected, which is why this only ever showed on trunks configured in a way that produces rejections, where it accumulated with every attempt. - **Reapplying the configuration leaked a system resource on TLS trunks**: applying a configuration change stops and restarts the TLS transport, and a lock created at start-up was never released — one per change, inside the driver. Found together with 17 further leaks by the first run of the test suite under a leak detector; the suite is now checked for leaks continuously. - **PCIe adapters could in principle corrupt memory on machines with more than 4 GB of RAM**: the driver never declared which address range the card may transfer into, and stayed below 4 GB only because the Linux PCI layer happens to default there. The hardware genuinely cannot address above 4 GB, so this is now stated explicitly and an address outside the range fails the transfer instead of being silently truncated. ### Improvements - **The monitor is now called "PrimuX Monitor"**: it has been showing SIP controllers and their B channels for some time, so "ISDN Adapter Monitor" was no longer accurate. An in-place upgrade rebuilds the Start menu group, so the previous name does not linger beside the new one. - **The monitor now appears in the Linux desktop menu**: it was part of the graphical installation packages but had no launcher, so it was installed and invisible unless you knew to start it from a shell. It now has a menu entry, which is removed again on uninstall. ## 3.11.11 2026-08-04 ### Bug Fixes - **The ISDN Adapter Monitor showed no channels for SIP adapters**: For a SIP controller the monitor displayed the controller heading with CON, Rx and Tx, but the area below it stayed empty — even during an active call with audio in both directions. Hardware ISDN controllers were unaffected. The call data was being collected correctly the whole time; it simply never reached the monitor. SIP calls now appear as channel rows with their connection state and traffic counters, just as ISDN calls do. - **The line-status indicator stayed grey on SIP trunks**: The monitor's status LED for a SIP line never lit up. It now shows green once the trunk is registered, and for trunks operated without a registrar — where no registration is ever sent — it is green as soon as the line is up. - **The Rx/Tx activity indicators in the monitor never worked** *(all previous versions, all adapter types)*: The two indicators for signalling traffic stayed dark on every controller because the data was not being passed on internally. They now flash with traffic on both ISDN and SIP lines. - **32-bit console installation on Linux installed unusable program files** *(affects 3.11.5 to 3.11.10)*: In the console-only 32-bit installation package, all five command-line programs — configuration utility, trace viewer, monitor service, remote CAPI client and its configuration tool — were packaged as intermediate build files instead of the finished programs, at a few hundred KB each instead of several MB, and could not be started. Installation itself ran without error, which is why this was not apparent. 64-bit installations and installations with a graphical interface were not affected. The build now refuses to package such a file. ### Improvements - **Separate GTK3 installation packages for Linux, 32-bit and 64-bit**: GTK3 is the standard graphical interface, but until now it was only available inside the complete package, while the older GTK2 variant had its own packages for both architectures. GTK3 now has them too. ## 3.11.10 2026-07-31 ### Bug Fixes - **Outgoing calls failed on SIP trunks that require authentication** *(affects 3.11.5 to 3.11.9)*: Registration, keep-alives and incoming calls all worked normally, but every outgoing call ended immediately — on Windows with cause code 3301. The trunk therefore looked healthy and the fault appeared to lie with the provider. The cause was on our side: since 3.11.5 the driver refused to send SIP messages larger than 1300 bytes over UDP, without any alternative path. A provider that answers the first call attempt with an authentication request makes the second, mandatory attempt roughly 300 bytes larger, and it is that second message which was discarded. Such messages are now sent over TCP as the SIP standard requires, and over UDP if TCP cannot be reached — they are never discarded. If you are on 3.11.5 to 3.11.9 and outgoing calls fail, this update resolves it. ### Improvements - **The line setting "DTMF Mode" is now called "DTMF senden als"**: The setting only ever governed how the driver *sends* touch-tone digits; how a connected telephone system signals *incoming* digits is decided by that system and cannot be influenced here. The previous name suggested otherwise. Behaviour and saved configurations are unchanged. ## 3.11.9 2026-07-29 ### Bug Fixes - **The option to disable T.38 was not reachable**: the setting introduced in 3.11.8 was placed in a collapsed section of the line settings and so never appeared. It is now shown in *Grundeinstellungen*, alongside DTMF Mode and Codecs, in both the graphical and the console configuration utility. Use it if a PBX or provider does not cope with T.38 — some reject the T.38 offer and end the call rather than continuing over G.711. - **Installer and drivers showed "Herausgeber: Unbekannt" on systems without internet access**: our signatures did not carry the intermediate certificate, so Windows had to download it before it could verify the publisher. On a machine with no outbound internet — a common setup for telephony servers — the signature could not be validated and the publisher appeared unknown, even though the file was correctly signed. The full certificate chain is now embedded, so verification succeeds offline. - **Two systems sharing one SIP account could take each other's calls**: the identifier the driver puts in its SIP registration was derived only from the configured account details, so two machines set up with the same account announced themselves identically. Depending on the PBX, the second registration could then replace the first, and the first system would silently stop receiving calls. The identifier is now tied to the machine's network hardware, so each installation is distinct. ## 3.11.8 2026-07-29 ### New Features - **T.38 fax over IP** *(now active)*: Faxes are carried as a T.38 data stream to peers that support it, instead of as a modulation inside the voice channel. Negotiation is automatic in both directions — outbound the driver offers T.38 and falls back to G.711 if the peer declines; inbound it starts on G.711 and switches mid-call if the peer offers T.38 after hearing the answer tone. No configuration is required for a fax to work. - **T.38 can be switched off per SIP trunk**: A new option, *"T.38 (Fax over IP) deaktivieren"*, is available in the line settings of both the graphical and the console configuration utility. Use it if a PBX or provider does not cope with T.38. Note that with T.38 disabled, no fax can be exchanged with a peer that accepts T.38 exclusively — some fax services do exactly that and end the call. ### Bug Fixes - **Lost pages at the end of a received fax**: Data not yet handed to the application was discarded during call teardown, so the tail of a long fax could vanish behind an otherwise clean result. Affects fax reception generally, not only T.38. - **Stability**: Fixed two conditions in which a large fax could halt the machine (driver memory exhaustion). A failed allocation now fails the affected call instead of stopping the system. - **Fax transmission fixes**: single-page documents ended with the wrong end-of-page signal; a remote abort was reported as a training error; and symbol timing could drift after a V.17 short-train retransmission, breaking error-corrected retries. - **DTMF digits received via SIP INFO** now produce an audible tone in the voice channel — previously the driver reported the digit to the application but the recording stayed silent. Digits received via RFC 2833 were also reported twice. - **Inbound SIP OPTIONS requests are answered with 200 OK** and advertised in the Allow header. Some providers treat a missing response as the line being down. - **SID-bound licences could not be activated** on Windows: the machine fingerprint the licence is tied to was never read, so activation failed on every driver start and configuration apply. ### Improvements - The Start menu program group is now named *PrimuX*, and changes to its shortcuts appear immediately without a restart. - The manual documents T.38 and the new option to disable it. ## 3.11.7 2026-07-24 ### New Features - **Encrypted SIP trunks (TLS + SDES-SRTP)** *(beta)*: SIP signalling can now run over TLS with SDES-SRTP media encryption. Configure it per trunk via the new Klartext/TLS transport selector in both the graphical configuration utility and the CLI, including trust roots / client certificate and peer-certificate verification. - **IPv6 for SIP**: SIP telephony now works over IPv6 (AAAA resolution, IPv6-first connection ordering) for TLS, TCP and UDP. - **TLS connection test**: The configuration utility's connection test (Verbindungstest) now performs a full TLS handshake and REGISTER, and reports an ICMP "port unreachable" (wrong port/transport) instead of a generic timeout. ### Bug Fixes - **Carrier registration**: Fixed SIP registration failing against carriers whose DNS advertises a TLS service on a different port than cleartext — the driver now honours the trunk's configured transport when selecting a DNS (NAPTR) record instead of always taking the carrier's preferred (TLS) entry. Resolves registration against ecotel/Centrex trunks. - **Codec preferences preserved across updates**: Inbound calls from carriers offering only certain audio codecs (such as PCMA) are no longer rejected after a driver update. - **Installer reliability**: Driver updates now always take effect, fixing cases where Windows served a cached older driver. - **Stability (TLS/TCP signalling)**: Fixed several kernel crashes and hangs on the SIP-over-TCP/TLS path, including receive-buffer truncation, receive re-post recursion, end-of-stream teardown, and a spinlock wedge during call teardown to an immediately-hanging-up peer. - **Security**: Fixed a remote, unauthenticated kernel panic that could be triggered by an inbound SIP-over-TCP connection. ## 3.11.6 2026-07-13 ### Bug Fixes - Fixed overlap dialing to correctly transmit collected digits instead of dropping them, resolving transfer failures with PBX systems like OpenScape Business. ## 3.11.5 2026-07-10 ### New Features - **SIP Configuration Validation Tool**: The configuration utility now includes a real SIP connection test that validates your edited settings before applying them—checking DNS resolution, transport connectivity, TLS handshakes, and SIP registration with digest authentication, all using the same logic as the driver itself for byte-accurate parity. - **Codec List from Driver Profile**: The configuration utility now automatically reads your driver's compiled codec set instead of using a hardcoded list, eliminating mismatches where selecting one codec would silently use a different one on the call (e.g., selecting G.729 but sending G.726-24). - **Linux Desktop Integration**: The Linux installer now creates proper application icons and menu entries for the configuration utility and diagnostic tools so they appear correctly in GNOME/Wayland and other desktop environments. - **64-bit Linux Installer**: The full Linux archive now includes 64-bit installer variants, allowing native installation on 64-bit systems without multilib support. - **Windows Installer Reboot Diagnostics**: The installer console now displays which specific files require a reboot (instead of just reporting that a reboot is needed), making it immediately clear what triggered the system restart. - **Proxy Configuration Validation**: SIP trunk configuration testing now includes a dedicated proxy validation step that separately diagnoses proxy misconfigurations (DNS, reachability, authentication) instead of surfacing them indirectly as registration failures. - **SIP OPTIONS Reachability Check**: Configuration validation now includes an OPTIONS probe for SIP trunks without a registrar, closing the gap for peer-to-peer trunk testing. - **Release Review Gate**: The release process now splits into prepare (generate changelog) and publish (commit and tag) steps, allowing human review of AI-generated changelogs before publication. - **IPv6 Support for SIP and VoIP Calls**: PrimuX now supports IPv6 addresses for SIP telephony, enabling modern IP infrastructure alongside legacy IPv4, including full DNS AAAA record support, automatic IPv6-first connection ordering, and source address detection for both Windows and Linux platforms. - **High-DPI Display Support**: Configuration utility (capiuiwx), diagnostic trace tool (tracerwx), and CAPI monitor now render correctly on high-resolution displays (4K, laptop HiDPI screens) without blurry scaling. - **Windows Legacy Driver Catalog**: PrimuX drivers now load on Windows XP, Vista, Windows 7, and Windows 8 systems that only trust SHA-1 signed catalogs, with the installer automatically selecting the correct driver catalog for your Windows version at install time. - **Windows Fax Service Integration**: PrimuX can now integrate with Windows Fax Service Provider (FSP) for system-level fax handling and archival during installation. - **Compressed Trace File Support**: The diagnostic tracer now reads and analyzes bzip2-compressed trace files (.bz2) in addition to raw traces, reducing storage requirements. - **Multi-Language Locale Support**: Configuration utilities now correctly resolve translations (German, French, Dutch, Italian, Spanish) from the system cross-toolchain instead of requiring manual installation. - **Single-Instance Application Enforcement**: Configuration and monitoring tools now prevent multiple instances from running simultaneously, improving system stability. - **Early Dialog Support for Improved Call Setup**: PrimuX now establishes early dialogs when receiving provisional responses (180/183) with To-tags, enabling proper handling of early media and in-dialog requests during call setup per RFC 3261. - **DNS Caching for Faster Name Resolution**: PrimuX now caches DNS responses with TTL-aware expiration (1 second to 1 hour), reducing redundant lookups and improving call setup performance on high-latency networks. ### Bug Fixes - **Windows Reinstall No Longer Requires a Reboot**: Reinstalling the driver over an existing installation no longer demands a system restart to replace the driver. The installer now releases the in-use CAPI driver (stopping the Fax service that held it open) before updating, so the new version applies immediately. - **Configuration Utility Help Opens the Manual**: The "Hilfe" (Help) menu in the configuration utility no longer opens an empty window; on Windows it now displays the product manual directly. - **SIP "Automatisch" Adapter Selection**: Selecting the automatic ("Automatisch") local network adapter for a SIP trunk now works correctly. Previously the local address was left unset, so the connection never came up. - **Linux Diagnostic Tools Stability**: The trace viewer no longer crashes when its window is closed, and no longer hangs at the splash screen when launched with administrator (sudo) privileges. - **Linux Installer Responsiveness**: The installer no longer briefly shows a "not responding" message during post-installation, and its file cleanup is quieter (it no longer reports removing files that were not there). - **Readable Trace Output**: Fixed garbled characters that could appear in driver traces for SIP configuration values. ## 3.11.4 2026-02-18 ### Bug Fixes - Fixed an issue where X.31 D-channel connections to Agfeo PABXes would fail after a previous session by properly clearing stale LAPD state on reconnection. - Fixed release version numbering in build artifacts to ensure all components report the correct version. ## 3.11.3 2026-02-18 ### New Features - **AI-Powered Release Notes** — Automatically rewrite raw git commits into professional, customer-friendly changelog entries using Claude AI integration during the release workflow. - **Microsoft Partner Center Attestation** — Streamlined Windows driver attestation with automatic CAB creation, catalog signing, and submission tracking. - **Signed Docker Builds** — Single `build-release.sh` command manages signing server lifecycle and securely passes credentials into containers. - **CAPI Monitor (capimon)** — Integrated GUI and background service with automatic wxWidgets compilation; fixed Linux driver crash from concurrent Context access. - **Release Management Tools** — Automated version numbering, changelog generation from conventional commits, and git tag management via tools/release.py. - **Enhanced Build Node Class** — Improved Path compatibility with `__fspath__()`, new filesystem methods (mkdir, write_bytes, is_dir, is_file, touch, copy_to), and smarter rebuild detection. - **Readline Shell Completion** — Tab-cycling completion, history filtering, colored output with file indicators, and case-insensitive matching in devcontainer. - **Automatic NAS Artifact Upload** — Final deliverables (installers, ISOs, packages) automatically upload to Network Attached Storage via SFTP after building. - **German Installer Localizations** — All Start Menu shortcuts display in German on German Windows installations. - **Enhanced Signing Server UI** — Rich terminal interface with live job tracking, thread-safe state management, and statistics reporting. - **Symbol Server Integration** — Automatic debug file upload to Microsoft Symbol Server, eliminating manual symbol management. - **AT Command Parser Modernization** — Migrated from LALR(1) to modern BNF grammar, reducing code complexity by 50% with improved type safety. - **Git LFS Support** — Pre-built WDK packages enable reproducible Docker builds without manual toolchain setup. - **Complete Build System Modernization** — Transitioned from Windows batch scripts to Linux-native waf build system with UTF-8 support throughout. - **NSIS Installer Framework** — Professional installer with automatic 32/64-bit detection, device driver integration, and multi-language support. - **Code Signing Infrastructure** — Integrated Authenticode signing for Windows drivers and applications. - **Docker Development Environment** — VS Code devcontainer with all required compilers, SDKs, and build tools pre-configured. - **Cross-Platform Toolchain** — Clang/LLVM, Zig, and native compiler support for Windows, Linux x86, and Linux x64 builds from single configuration. ### Improvements - **Installer Robustness** — Fixed WOW64 file system redirection, corrected OEM-specific bitmap loading, and added service management during upgrades. - **Complete Driver INF Staging** — Windows correctly finds all child device drivers (NDIS WAN miniport, modem port) during enumeration. - **Installer UX** — Modern UI finish page replaces MessageBox prompts; single progress indicator for driver updates instead of per-device messages. - **Automatic Installation Cleanup** — Existing driver versions automatically uninstalled before new version installation without user confirmation. - **Uninstaller Language Persistence** — Uninstaller automatically uses system language from installation instead of re-prompting user. - **Catalog Entry Ordering** — Fixed Windows catalog signature validation by sorting entries by SHA1 hash. - **Device Path Correctness** — Fixed NSIS parameter ordering to ensure correct device paths with proper Hardware ID and instance ID. - **Comprehensive German Documentation** — Fixed OS support lists, kernel versions, GTK requirements, terminology, and technical accuracy throughout manuals. - **Build Idempotency** — Fixed cache miss rate, PNG dependency chain, and unnecessary double-configuration during rebuilds. - **Reproducible Builds** — SOURCE_DATE_EPOCH support for deterministic timestamps across all tools. - **Complete UTF-8 Migration** — All 3,600+ source files converted from CP1252 to UTF-8 with proper German umlauts throughout codebase. - **Linux Driver Stability** — Fixed concurrent Context global static access between user-space handlers and kal_thread, matching Windows serialization behavior. - **Improved Manual Filenames** — Language-specific directories now use consistent manual.htb filename for proper packaging. ### Bug Fixes - **OEMBUILD Version Parsing** — Fixed regex to correctly extract patch ## 3.11.2 2025-10-10 ### Bug Fixes - Fixed configuration issues when multiple ISDN adapters are installed on the same system. ## 3.11.1 2025-10-09 ### New Features - Improved connection tracking for multiplexed ISDN channels. ### Improvements - Enhanced SIP routing and DNS lookup reliability. - Improved support for multiple simultaneous interrupts on PCIe adapters. - Updated Windows driver installation compatibility for modern Microsoft hardware requirements. - Enabled multi-host routing and loopback functionality. ### Bug Fixes - Resolved Windows network driver validation issues. - Fixed ISDN adapter driver compatibility with current Windows versions. ## 3.11.0 2025-09-27 ### New Features - German characters (ä, ö, ü, ß) now display correctly in PDF manuals across all platforms. - Added connection tracking support for improved call routing and management. ### Improvements - Enhanced SIP routing parameters for better call handling and NAPTR lookup support. - Improved PCIe adapter interrupt handling for more stable hardware operation. - Updated Windows driver installation packages to meet Microsoft hardware attestation requirements. ### Bug Fixes - Resolved character encoding issues in German-language documentation. - Fixed Windows driver INF file validation errors. - Corrected PnpLockdown configuration in network driver installation templates. ## 3.10.47 2025-04-11 ### Bug Fixes - Improved diagnostic information for S2M/E series adapter channel configuration. ## 3.10.46 2025-02-21 ### Bug Fixes - Resolved compatibility issue with ncurses library dependency on Linux systems. ## 3.10.45 2025-02-19 ### New Features - Added improved connection tracking for ISDN channels to enhance call management and diagnostics. ### Improvements - Updated core driver library for better system stability and compatibility. ### Bug Fixes - Fixed handling of multiple interrupts on PCI Express adapters to prevent call drops and audio issues. - Improved SIP routing compatibility by correcting route parameter handling. - Fixed SIP server discovery to properly resolve NAPTR DNS records for more reliable VoIP connectivity. ## 3.10.44 2024-10-02 ### Bug Fixes - Fixed fax header rendering issue that could cause incomplete or corrupted fax headers in outbound faxes. ## 3.10.43 2024-06-04 ### Bug Fixes - Fixed DTMF tone volume levels in SIP calls to comply with RFC2833 standards. ## 3.10.42 2024-05-23 ### Bug Fixes - Improved stability of PrimuX adapter hardware interrupt handling to reduce potential signal processing delays. ## 3.10.41 2024-05-17 ### Bug Fixes - Fixed Loss of Signal detection for TE (Terminal Equipment) mode to properly use hardware clock status indicators. ## 3.10.40 2024-05-07 ### Bug Fixes - Improved handling of incoming touch-tone (DTMF) signals in VoIP calls to ensure reliable tone recognition. - Resolved dependency issues in the configuration utility that could prevent it from running on some Windows systems. ## 3.10.39 2024-03-28 ### Bug Fixes - Fixed DTMF tone volume levels when using SIP telephony with RFC2833 standard. ## 3.10.38 2024-03-15 ### Bug Fixes - Fixed hardware initialization issues with PrimuX adapter line interface units to ensure reliable device activation. ## 3.10.37 2024-03-15 ### Bug Fixes - Diagnostic trace tool now displays milliseconds in wall clock timestamps for more precise timing analysis. ## 3.10.36 2024-03-14 ### Bug Fixes - Improved compatibility with I.431 ISDN protocol standards to ensure reliable operation with compliant network equipment. ## 3.10.35 2024-03-08 ### Bug Fixes - Fixed USB device disconnection handling to properly clean up resources when PrimuX USB adapters are removed. - Fixed DTMF tone detection to remain active when using standard SIP signaling methods instead of SIP INFO. ## 3.10.34 2024-02-29 ### Bug Fixes - Improved USB adapter detection and validation to prevent initialization errors with PrimuX USB devices. ## 3.10.33 2024-02-26 ### Bug Fixes - Fixed an issue with SIP event handling that could cause telephony call events to be misprocessed. ## 3.10.32 2024-01-18 ### Bug Fixes - Configuration utilities (capicfg and rmtconfig) now properly request administrator privileges on Windows. - Fixed registry access issues in the remote configuration tool (rmtconfig) that could prevent settings from being saved correctly. ## 3.10.31 2024-01-04 ### Bug Fixes - Resolved SELinux compatibility issues on Linux systems by correctly placing kernel modules in the standard system directory. ## 3.10.30 2023-12-27 ### Bug Fixes - Improved DTMF (touch-tone) signal handling and reliability in SIP telephony. - Enhanced work item processing to improve overall system stability. - Updated core driver library for Red Hat 9 compatibility. ## 3.10.29 2023-11-16 ### Bug Fixes - Fixed SIP Allow header processing to improve compatibility with SIP endpoints. - Fixed a variable naming conflict in CAPI SIP integration that could cause unexpected behavior. ## 3.10.28 2023-11-15 ### Bug Fixes - Resolved additional DTMF (touch-tone) signaling issues in SIP telephony and configuration utilities. ## 3.10.27 2023-11-14 ### Bug Fixes - You can now override the outbound DTMF (touch-tone) mode in the configuration utility, allowing you to control how dialing tones are transmitted even when the system would normally use a different mode. ## 3.10.26 2023-11-14 ### Bug Fixes - Fixed DTMF tone detection and transmission in SIP calls, ensuring reliable touch-tone signaling during Voice-over-IP telephony. ## 3.10.25 2023-11-14 ### Bug Fixes - Resolved an issue in SIP call handling that could affect voice-over-IP call stability. ## 3.10.24 2023-11-14 ### Bug Fixes - Fixed DTMF mode configuration handling to ensure touch-tone settings are correctly stored and applied in SIP telephony operations. ## 3.10.23 2023-11-13 ### Bug Fixes - Fixed SIP authentication handling to improve compatibility with certain SIP servers. ## 3.10.22 2023-11-09 ### Bug Fixes - Resolved compatibility issue with GTK3 configuration on Linux systems. ## 3.10.21 2023-11-08 ### Improvements - Configuration utility now supports importing and exporting settings in INI format for easier backup and migration. - SIP telephony channel configuration is now correctly reported and managed. - Linux device rule reloading now uses udevadm when available for better system integration. - Added support for 64-bit GTK3 configuration interface on Linux systems. ## 3.10.20 2023-10-30 ### Bug Fixes - Fixed a type error in SIP telephony that could affect call stability. ## 3.10.19 2023-10-27 ### Bug Fixes - Improved reliability of touch-tone (DTMF) signaling in SIP calls to ensure correct dial tone transmission and reception. ## 3.10.18 2023-10-27 ### Bug Fixes - Fixed support for different DTMF (touch-tone) transmission modes to ensure reliable dialing across various SIP configurations and phone systems. ## 3.10.17 2023-10-27 ### Bug Fixes - Fixed an issue where SIP configuration parameters were not being read correctly from configuration files. ## 3.10.16 2023-10-27 ### Bug Fixes - SIP calls now correctly use configured domain names in identity headers, improving compatibility with strict SIP servers. ## 3.10.15 2023-10-26 ### Bug Fixes - Fixed a parameter issue in SIP call processing that could affect call handling reliability. ## 3.10.14 2023-10-26 ### Bug Fixes - Fixed a string comparison issue in SIP telephony that could affect call handling and session management. ## 3.10.13 2023-10-26 ### Bug Fixes - Fixed SIP transport protocol handling to correctly support lowercase protocol specifications, improving compatibility with various SIP configurations. - Resolved SIP telephony library compatibility issues. ## 3.10.12 2023-09-20 ### Bug Fixes - Fixed a potential system crash that could occur when removing an ISDN channel during concurrent operations. ## 3.10.11 2023-08-30 ### Bug Fixes - Fixed a crash in the SIP telephony module that could occur when handling certain call states. ## 3.10.10 2023-03-30 ### Bug Fixes - Improved DTMF tone handling for SIP telephony to enable better compatibility with voice-over-IP systems. - Updated core driver library for improved system stability. ## 3.10.9 2023-02-17 ### Bug Fixes - Fixed memory alignment issue in the Windows ISDN network driver (NDIS/isdnwan) to improve stability and compatibility. ## 3.10.8 2023-01-24 ### Bug Fixes - Resolved SIP telephony stability issue. ## 3.10.7 2023-01-13 ### Bug Fixes - Improved SIP telephony stability with siplib update. ## 3.10.6 2023-01-05 ### Bug Fixes - Corrected European standard references in hardware documentation for regulatory compliance. ## 3.10.5 2022-04-27 ### Bug Fixes - Fixed SIP contact header handling to improve compatibility with telephony systems. ## 3.10.4 2022-03-24 ### Bug Fixes - Improved compatibility with newer Linux kernel versions. ## 3.10.3 2022-02-11 ### Bug Fixes - Resolved an issue in the SIP telephony module that could affect Voice-over-IP call quality and stability. ## 3.10.2 2022-02-10 ### Bug Fixes - Improved event handling on Linux systems to ensure reliable driver operation. - Fixed SIP telephony stability issues. ## 3.10.1 2022-02-09 ### Bug Fixes - Fixed loopback adapter to correctly report the number of available controllers. ## 3.10.0 2022-01-14 ### New Features - Added TAP interface support to the loopback adapter for improved testing and diagnostic capabilities. ## 3.9.199 2022-01-11 ### Fixes - protect against concurrent access (d4f23895ef104dc8eeb3384a4a5edeec328babd1) ## 3.9.198 2022-01-07 ### Fixes - initialize frame to all ones to avoid misdetection (77129d302c15fa31d26f3d37fc00cc765bcd8d6c) ## 3.9.197 2021-12-17 ### Fixes - update vxdlib (a394579eabd53821cf5d10a4ca8ea8127bbd62e5) - use max freq value from smbios instead of current freq (d75353baa6456e2c339353775eef0218f539b467) - update date of CE declaration (0d964e1f4d8473ab1bc0fbc82ac6e653f7cb1aab) - update vxdlib (7ab291041f8d3cc641c28f4b9318e0b62a926b42) ## 3.9.196 2021-11-05 ### Fixes - resize property grid in idle handler as deletion might be delayed (562942eb79ecfdeeecb78c6ece1c94bba6ddf900) - reset rufAnnahme if linesettings have changed (c2aa0537722c3c9e48da0d2d7000e0a06f5c5bdc) ## 3.9.195 2021-11-05 ### Fixes - improve property rendering, fix invalid choice (98e67e1910d894aa148617a75326038781457bc3) ## 3.9.194 2021-10-31 ### Fixes - error logging (e00a556043f622e3f0ff290e56c7ff52302ddbb4) ## 3.9.193 2021-10-07 ### Fixes - update siplib (59c749ac9a2f6b83d11db8357a5fec0ba6643f89) ## 3.9.192 2021-09-23 ### Fixes - updated vxdlib (3a8d2d3d73e51bd18bc646f0b28b2a9373d8c8d8) ## 3.9.191 2021-08-25 ### Fixes - stupid LARGE_INTEGER... (ecfc914454eaca515468fb471ef6b044e126726c) ## 3.9.190 2021-08-25 ### Fixes - fix FSP to ISO addition (7ca08d37694f7f3901a66fb10766ea473787f108) - don't choke on Driver Verifier 'Force Pending I/O' (3254cb328af8cc88d6586c94a7d600876f28f80a) ## 3.9.189 2021-08-20 ### Fixes - use QueryPerformanceCounter instead of RDTSC macro (9b653064244d7425d5e55fbf1dcc2f7729df5fcc) ## 3.9.188 2021-04-14 ### Fixes - avoid accessing hardware after adapter has been disabled (b5ae1a9537da11550d47d6e08e5a0188aa16df20) ## 3.9.187 2021-04-08 ### Fixes - fix driver verifier problems (e8d3bc2058fedcb85c4c93305405a45a510f0c42) ## 3.9.186 2021-03-19 ### Fixes - more driver verifier nagging (ebb4784f723ab833e1ba88c23d9e751a1caab08e) ## 3.9.185 2021-03-19 ### Fixes - SerialDevice must send IRP down (690d2ffb199928546b45c946e8be302d75f60951) ## 3.9.184 2021-03-19 ### Fixes - don't set cancel routine on LAN IRPs (45c4c6d6e4923f367054b2e264b1cf71f6f9adef) ## 3.9.183 2021-03-18 ### Fixes - update SIPLIB (594f38cf166192d186f5844b3b29459194935650) - use KernelMode wait for TdiCall (c41bc52a586cbee52c7aae067c8537851bd4f53b) ## 3.9.182 2020-12-16 ### Fixes - send ALERTING on 180 regardless of SDP (f354fe175fc41f8f58713cb95bf5fc3c781cba25) ## 3.9.181 2020-12-11 ### Fixes - stupid mistake... (a8eabf6d17c4e4b5918a03921fee4a955f957983) ## 3.9.180 2020-12-11 ### Fixes - correctly clean up callRef if no PLCI is available (43fb37ab310ecfd29fe93eccbcb2378dfab6e54b) ## 3.9.179 2020-12-10 ### Fixes - update SIPLIB (b8d5fc0ba011802e39ad4b154d3c092258d5ad2d) ## 3.9.178 2020-12-08 ### Fixes - another shot at the mysterious fax problem (9d6ea0f71d15481e04ad9c312aa7db351a91afe5) ## 3.9.177 2020-11-26 ### Fixes - use PnP for virtual COM devices (09ae472d9b94762fdfa6319b0acccc80b9864048) - avoid race condition on invalid connections (b597656934f2472f8e007bb5a2d23567546d211e) ## 3.9.176 2020-11-12 ### Fixes - disable debugging again (13f5ab35d9b6c364de882cdde7996495205ee3b4) ## 3.9.175 2020-09-22 ### Fixes - show WLAN adapters for SIP adapter (599b683e2335d09635e242903d77c5b93ae8bf7a) - update SIPLIB (5b3da754f8c7e8985d76dd27de7a4a21bc3de5b6) ## 3.9.174 2020-08-17 ### Fixes - update SIPLIB (272318c7dad4c844d6386ed73d5b8389f04805de) ## 3.9.173 2020-08-14 ### Fixes - map 408 (timeout) to 0x3301, 401/407 (auth) to 0x3303 (b5e24fe6d0a4accce34c95a9590315827ef2f9b3) ## 3.9.172 2020-08-14 ### Fixes - update SIPLIB (e57b36a9a38da2d805a9d4dbe2c0c9ea7cad6305) ## 3.9.171 2020-08-14 ### Fixes - update siplib, mutex debug (08902eb77ec48d9ccbd3e43537229d1a3f5313ad) ## 3.9.170 2020-08-14 ### Fixes - update SIPLIB (731188ac4b6b8d1dd7ec55218afb2823bb46a4fc) ## 3.9.169 2020-08-13 ### Fixes - fake SETUP ACK on first response (1e5e0138acdfed4c8f3a3d4e020e4ff7a4907ad8) ## 3.9.168 2020-08-12 ### Fixes - assert mutex state on destroy (6e84b9eba593d6a310ee953585550feec7c734a0) ## 3.9.167 2020-08-03 ### Fixes - update SIPLIB (30e9c26ad7e044810f3a4565a18def85b4ed9d0b) ## 3.9.166 2020-07-31 ### Fixes - update SIPLIB (fb44f492ad3f427bb2e24dab351a184640791f71) ## 3.9.165 2020-07-28 ### Fixes - update SIPLIB (ba86e74c137eab7db48d5f8d48c0f1cbec5cabf9) ## 3.9.164 2020-07-28 ### Fixes - update SIPLIB (a4dccce8deb172618b66629982e89acca4b595c8) ## 3.9.163 2020-07-27 ### Fixes - update SIPLIB (3c208041eb2d6083f8099c26c5b6e0e2618ec9cf) ## 3.9.162 2020-06-30 ### Fixes - update VXDLIB (linux only) (88dc548f5841f2395cf48a4dd1f781c1c7a7a125) - update siplib (be1c385feba9f4632be7341d57874359c2603d56) ## 3.9.161 2020-06-05 ### Fixes - use signtool2.py to sign final release (e1fa7d86a8473f306fc2039d6c3bb9e518a18218) - fixes for MS code integrity checks (5a7e8af224549c6a93b5645b188f531af2533493) ## 3.9.160 2020-06-04 ### Fixes - fix offset for X.75 extended mode (d9715ada8a381c80d4c0b479a66df6ec05d0669b) - set page alignment to 4096 to satisfy MS code integrity checks (48c1698a1d5dda3d5f13865ac3f346c8450a2a11) ## 3.9.159 2020-05-22 ### Fixes - disable TCP debugging (d7e900e513764fa7f36496c0a2a9b61df35a436d) - configure NDIS debugging via Registry (6b28ef1643154df88f5fb18fc27c5e2c79ce22b7) ## 3.9.158 2020-05-13 ### Fixes - update siplib (228d29c2cab37762c3ee657dc5753f4f78d438f0) ## 3.9.157 2020-05-12 ### Fixes - update siplib (ef5e703780b631f153c09b0603c3d6a495d3ae5a) ## 3.9.156 2020-05-12 ### Fixes - grow TDI buffers for larger UDP packets (e352ef15e49e4e94402731fd3e57c21816a37494) ## 3.9.155 2020-05-11 ### Fixes - update SIPLIB (4db7fde261d640a7eba29d1ee8b0175488e0a31f) ## 3.9.154 2020-05-11 ### Fixes - update SIPLIB (8f950ec23614f33f348ed2eed2a1124fd0d8e455) ## 3.9.153 2020-04-23 ### Fixes - update SIPLIB (b10a185150714911f7203f5335fad9bc894d0a8d) ## 3.9.152 2020-04-17 ### Fixes - update SIPLIB (RTP buffer size) (0cf6c79a9f11b1f1f2dc489229377b11008123cb) ## 3.9.151 2020-04-04 ### Fixes - disable tone events to avoid duplication between audio and event (aba244e87965377d7d50de926f91e4355485da1a) ## 3.9.150 2020-04-03 ### Fixes - don't call sip_RtpXXXData in sessionState_Terminated as RtpSession is already invalid (b4029fbbb0a2a06e98bcc28c6247e0c3f8b76b95) ## 3.9.149 2020-03-09 ### Fixes - update SIPLIB (b3d1e23964124b6d5bf200db50de322ac9fcd117) ## 3.9.148 2020-03-06 ### Fixes - add missing function (18a541743824f38536ff6ce86ec87df95e230e88) ## 3.9.147 2020-03-06 ### Fixes - update SIPLIB (7c6dff0ef7101adf351320a80dde70204f6cf3ca) ## 3.9.146 2020-02-26 ### Fixes - Linux 5.x fixes (756d6856548a22e57418d0fd8c340aa542adfd06) ## 3.9.145 2020-02-26 ### Fixes - make Linux setup recognize kernel 5.x (d7ba35ffce61a8cea465b5d3b76c323fd4eb6555) ## 3.9.144 2020-02-05 ### Fixes - update siplib (c4ded03b042fa5fe9408d9816a7441cc6c15116d) ## 3.9.143 2020-01-23 ### Fixes - fix crash on weird locales (b557634b037c2e4f290e33fab908c01ed5cc9c3f) ## 3.9.142 2020-01-22 ### Fixes - SIP over TCP fixes (wip) (c7ea52e14b5b750736ba2bae5e851182b059992e) - Update siplib (DTMF tones) (1cb7b9bb28c1c6acdb7405edb83aca0bd8e71b64) ## 3.9.141 2019-12-05 ### Fixes - grow allowed rx packet size to allow for jumbo frames (5bf2f504dc0327c797eef185518ae690fbc2cba1) ## 3.9.140 2019-11-29 ### Fixes - siplib bug (d00a04c81f63560b1b40f751adc698c9ac457bc8) ## 3.9.139 2019-11-28 ### Fixes - support multiple STUN callbacks per socket (siplib update) (fb25f6dddfc61f82b1f3c39ae57692a602cf64bb) ## 3.9.138 2019-11-16 ### Fixes - enable debug output (dd75632be93f7d0ecc575ada444a9d280ab9be09) - Win10 crash (2c64fd8d7dfd523aa7473cf5f92dff234d7266b0) ## 3.9.137 2019-10-08 ### Fixes - KeGetCurrentProcessorNumber does not work with processor groups, need to use KeGetCurrentProcessorNumberEx if available (00df23e0e2baff3ab704b428ea8212d1db03347b) ## 3.9.136 2019-09-06 ### Fixes - updated siplib (47e2bedd377b883cd5f0ffc8065f0539849ca449) ## 3.9.135 2019-07-31 ### Fixes - use MS signed driver for Win10/Win2016 only (a3cf206cd98def8117a2806c7cae8ba7f3532fd1) - Linux UDP socket handling did not connect callbacks (66afdf253d96eae4a38647f371e90ec9d7cc3af9) ## 3.9.134 2019-07-28 ### Fixes - detect Win8, Server 2012 etc. as OS_VISTA, not OS_WIN10 to avoid signature troubles (4ae6221287ae1d17c6f912ed79f9230d550a312f) ## 3.9.133 2019-07-24 ### Fixes - Support Linux kernel above 4.16 (2f0b06a8acd8a1ba9e7d660a5d7735496458b299) - simulate ALERTING info on every message containing SDP (17f2956dd84f96efc8d16f7c0b1011eefa6708c9) ## 3.9.132 2019-06-29 ### Fixes - update vxdlib (support linux kernel >= 4.14.0) (d303c1955a32a3f9aff63f223df8620fe3c29719)