Connect to dialup modems over VoIP using SIP, no modem hardware required.

Overview

D-Modem

Connect to dialup modems over VoIP using SIP, no modem hardware required.

https://www.aon.com/cyber-solutions/aon_cyber_labs/introducing-d-modem-a-software-sip-modem/

Building

You'll need Linux and a working 32-bit development environment (gcc -m32 needs to work, Debian-based systems can install libc6-dev-i386), along with PJSIP's dependencies (OpenSSL). Then run 'make' from the top-level directory.

How it Works

Traditional “controller-based” modems generally used a microcontroller and a DSP to handle all aspects of modem communication on the device itself. Later, so-called “Winmodems” were introduced that allowed for field-programmable DSPs and moved the controller and other functionality into software running on the host PC. This was followed by “pure software” modems that moved DSP functionality to the host as well. The physical hardware of these softmodems was only used to connect to the phone network, and all processing was done in software.

D-Modem replaces a softmodem’s physical hardware with a SIP stack. Instead of passing audio to and from the software DSP over an analog phone line, audio travels via the RTP (or SRTP) media streams of a SIP VoIP call.

Usage

The repository contains two applications:

slmodemd – A stripped down and patched version of Debian’s sl-modem-daemon package. All kernel driver code has been replaced with socket-based communication, allowing external applications to manage audio streams.

d-modem – External application that interfaces with slmodemd to manage SIP calls and their associated audio streams.

After they have been built, you will need to configure SIP account information in the SIP_LOGIN environment variable:

# export SIP_LOGIN=username:[email protected]

Next, run slmodemd, passing the path to d-modem in the -e option. Use -d for debug logging.

# ./slmodemd/slmodemd -d9 -e ./d-modem
SmartLink Soft Modem: version 2.9.11 Oct 28 2021 16:51:30 
symbolic link `/dev/ttySL0' -> `/dev/pts/3' created. 
modem `slamr0' created. TTY is `/dev/pts/3' 
Use `/dev/ttySL0' as modem device, Ctrl+C for termination.

In another terminal, connect to the newly created serial device at 115200 bps:

# screen /dev/ttySL0 115200

You can now interact with this terminal (almost) as you would with a normal modem using standard AT commands. A similar modem’s manual provides a more complete list.

Because there isn’t any dial tone on our SIP connection, you’ll need to disable dial tone detection:

atx3 
OK

To successfully connect, you will likely need to manually select a modulation and data rate. In our testing, V.32bis (14.4kbps) and below appears to be the most reliable, though V.34 (33.6kbps) connections are sometimes successful. For example, the following command selects V.32bis with a data rate of 4800 – 9600 bps. Refer to the manual for further details.

at+ms=132,0,4800,9600 
OK

Finally, dial the number of the target system. Below shows a connection to the NIST atomic clock:

atd303-494-4774 
CONNECT 9600 
National Institute of Standards and Technology 
Telephone Time Service, Generator 1b 
Enter the question mark character for HELP 
                        D  L 
 MJD  YR MO DA HH MM SS ST S UT1 msADV         
   
     
59515 21-10-28 21:40:18 11 0 -.1 045.0 UTC(NIST) * 
59515 21-10-28 21:40:19 11 0 -.1 045.0 UTC(NIST) * 
59515 21-10-28 21:40:20 11 0 -.1 045.0 UTC(NIST) * 
59515 21-10-28 21:40:21 11 0 -.1 045.0 UTC(NIST) * 
59515 21-10-28 21:40:22 11 0 -.1 045.0 UTC(NIST) * 
59515 21-10-28 21:40:23 11 0 -.1 045.0 UTC(NIST) *

   

Known Issues / Future Work

  • Connections are unreliable, and it is currently difficult to connect at speeds higher than 14.4kbps or so. It might be possible to improve this by disabling/reconfiguring PJSIP’s jitter buffer.
  • Additional logging/error handling is needed
  • The serial interface could be replaced with stdio or a socket, and common AT configuration options could be exposed as command line options
  • There is currently no support for receiving calls

Copyright 2021 Aon plc

Comments
  • Modem not dialing

    Modem not dialing

    I rebuilt the app after modifying the following files: slmodemd/modem_cmdline.c and slmodemd/modem_main.c. I tried calling the NIST Atomic clock shown in the example, and this is what shows in the modem window.

    I have tried to use a SIP Trunk account and a free SIP account from SIP2SIP.

    My export looks like this: export SIP_LOGIN=username:[email protected]

    The system is Ubuntu 22.04

    ./slmodemd/slmodemd -d9 -e ./d-modem SmartLink Soft Modem: version 2.9.11 May 3 2022 14:16:38 <478.180401> SmartLink Soft Modem: version 2.9.11 May 3 2022 14:16:38 <478.180406> slamr0: startup modem... <478.180452> slamr0: update termios... symbolic link /dev/ttySL0' ->/dev/pts/7' created. modem slamr0' created. TTY is/dev/pts/7' <478.180525> open file: /var/lib/slmodem/data.slamr0... <478.180536> cannot open '/var/lib/slmodem/data.slamr0': No such file or directory <478.183706> main: rt applyed: SCHED_FIFO, pri 99 <478.183753> main: dropped privileges to 65534.65534 Use `/dev/ttySL0' as modem device, Ctrl+C for termination. <491.290496> main: termios changed. <491.290506> slamr0: update termios... <493.003373> slamr0: run cmd: atx3 <493.003381> slamr0: modem report result: 0 (OK) <497.625941> slamr0: run cmd: at+ms=132,0,4800,9600 <497.625951> slamr0: modem report result: 0 (OK) <502.987402> slamr0: run cmd: atd3034944774 <502.987414> slamr0: modem dial: 3034944774... <502.987416> slamr0: modem_dial_start... <502.987418> call: create... <502.987422> CallProgFP_Create >> <502.987424> APPLY_FILTER = 0 <502.987426> Detection Thresholds: levle_fix=43,--> LEVEL_THRESHOLD=96 <502.987429> ============> 6 <502.987431> Cadence: Busy Tone loose detection is 0 <502.987434> TYPE BUSY <502.987436> Filter index 6 <502.987438> Filter SubIndex 0 <502.987440> MAX_ON_TIME 30 Buffers MIN_ON_TIME 9 Buffers <502.987442> MAX_OFF_TIME 30 Buffers MIN_OFF_TIME 9 Buffers <502.987445> OFF_TIME_THAT_RESETS_CYCLE 90 <502.987447> BUFFER LENGTH 160 samples. <502.987450> INTEGRATION_LENGTH 0[ms] <502.987452> LEVEL 96 <502.987455> INTEGRATION_TIME = 0 Buffers. <502.987458> Detection Thresholds: levle_fix=43,--> LEVEL_THRESHOLD=96 <502.987461> TYPE DIAL <502.987462> Filter index 5 <502.987463> Filter SubIndex 0 <502.987465> MAX_ON_TIME 0 Buffers MIN_ON_TIME 0 Buffers <502.987466> MAX_OFF_TIME 0 Buffers MIN_OFF_TIME 0 Buffers <502.987469> OFF_TIME_THAT_RESETS_CYCLE 0 <502.987470> BUFFER LENGTH 666 samples. <502.987472> INTEGRATION_LENGTH 2500[ms] <502.987474> LEVEL 96 <502.987476> INTEGRATION_TIME = 28 Buffers. <502.987479> CALLPROG Create << <502.987481> CALLPROG Dialing <502.987485> Configuration->tone_DigitLength 100 <502.987488> Configuration->pulse_OffHookTime 36 <502.987490> Configuration->pulse_OnHookTime 64 <502.987492> Configuration->dialPauseTime 2 <502.987494> Configuration->flashTime 50 <502.987496> Configuration->toneOrPulseFlag 0 <502.987498> Configuration->dialModifierValidationFlag 0 <502.987500> Configuration->ABCD_PermittedFlag 0 <502.987502> Configuration->pulseAndToneInSameStringPermittedFlag 0 <502.987504> Configuration->callingToneFlag 0 <502.987506> Configuration->commaPauseDurLimit 255 <502.987508> Configuration->digitPattern 1 <502.987511> Configuration->tone_BetweenDigitsInterval 100 <502.987513> Configuration->pulse_BetweenDigitsInterval 800 <502.987514> DTMF_Gain1 = 13014 <502.987517> DTMF_Gain2 = 16384 <502.987519> AnalyzeDialString: Updated 17 May 1999 00:50 <502.987521> Dial String Syntax is VALID <502.987522> GetNoAnswerTimeOut. 60 <502.987525> BlindCall: GetBlindDialPause = 2 . <502.987527> CALLPROG_Dial was exited. <502.987529> call: create RC: 9600 <-> 8000... <502.987533> slamr0: modem_start.. <502.987535> slamr0: modem set state: 1 --> 2... <502.987538> slamr0: new state: DP_ESTAB <502.987540> main: socket_ioctl: cmd 8, arg 3... <502.987543> slamr0: modem set hook: 0 --> 1... <502.987545> main: socket_ioctl: cmd 2, arg 1... <502.987547> main: socket_ioctl: returning 0 <502.987550> main: socket_ioctl: cmd 11, arg 0... <502.987553> main: socket_ioctl: returning 4 <502.987564> main: socket_ioctl: cmd 4, arg 2580... <502.987567> main: socket_ioctl: returning 0 <502.987568> main: socket_ioctl: cmd 7, arg 30... <502.987571> main: socket_ioctl: returning 0 <502.987573> main: socket_start... <502.987688> main: done delay thing 14:28:22.988 os_core_unix.c !pjlib 2.11.1 for POSIX initialized 14:28:22.988 sip_endpoint.c .Creating endpoint instance... 14:28:22.988 pjlib .select() I/O Queue created (0x5587aed43470) 14:28:22.988 sip_endpoint.c .Module "mod-msg-print" registered 14:28:22.988 sip_transport.c .Transport manager created. 14:28:22.988 pjsua_core.c .PJSUA state changed: NULL --> CREATED 14:28:22.988 sip_endpoint.c .Module "mod-pjsua-log" registered 14:28:22.988 sip_endpoint.c .Module "mod-tsx-layer" registered 14:28:22.988 sip_endpoint.c .Module "mod-stateful-util" registered 14:28:22.988 sip_endpoint.c .Module "mod-ua" registered 14:28:22.988 sip_endpoint.c .Module "mod-100rel" registered 14:28:22.988 sip_endpoint.c .Module "mod-pjsua" registered 14:28:22.988 sip_endpoint.c .Module "mod-invite" registered 14:28:22.988 pjlib ..select() I/O Queue created (0x5587aed50a18) 14:28:22.993 sip_endpoint.c .Module "mod-evsub" registered 14:28:22.993 sip_endpoint.c .Module "mod-presence" registered 14:28:22.993 sip_endpoint.c .Module "mod-mwi" registered 14:28:22.993 sip_endpoint.c .Module "mod-refer" registered 14:28:22.993 sip_endpoint.c .Module "mod-pjsua-pres" registered 14:28:22.993 sip_endpoint.c .Module "mod-pjsua-im" registered 14:28:22.993 sip_endpoint.c .Module "mod-pjsua-options" registered 14:28:22.993 pjsua_core.c .1 SIP worker threads created 14:28:22.993 pjsua_core.c .pjsua version 2.11.1 for Linux-5.15.0.27/x86_64/glibc-2.35 initialized 14:28:22.993 pjsua_core.c .PJSUA state changed: CREATED --> INIT 14:28:22.993 pjsua_aud.c Setting null sound device.. 14:28:22.993 pjsua_aud.c .Opening null sound device.. 14:28:22.993 pjsua_core.c SIP UDP socket reachable at 192.168.0.115:5060 14:28:22.993 udp0x5587aee01fb0 SIP UDP transport started, published address is 192.168.0.115:5060 14:28:22.993 pjsua_core.c PJSUA state changed: INIT --> STARTING 14:28:22.993 sip_endpoint.c .Module "mod-unsolicited-mwi" registered 14:28:22.993 pjsua_core.c .PJSUA state changed: STARTING --> RUNNING 14:28:22.993 pjsua_acc.c Adding account: id=sip:[email protected] 14:28:22.993 pjsua_acc.c .Account sip:[email protected] added with id 0 calling sip:[email protected] 14:28:22.993 pjsua_call.c Making call with acc #0 to sip:[email protected] <502.993861> call: process: msg 18 --> 0 14:28:22.993 pjsua_media.c .Call 0: initializing media.. 14:28:22.994 pjsua_media.c ..RTP socket reachable at 192.168.0.115:4000 14:28:22.994 pjsua_media.c ..RTCP socket reachable at 192.168.0.115:4001 14:28:22.994 pjsua_media.c ..Media index 0 selected for audio call 0 14:28:23.117 pjsua_core.c ....TX 945 bytes Request msg INVITE/cseq=19273 (tdta0x5587aee0fad8) to UDP 81.23.228.137:5060: INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.168.0.115:5060;rport;branch=z9hG4bKPjgkQYwjOBVLHYWf5AB1ykrcoJAwZ.NDbW Max-Forwards: 70 From: sip:[email protected];tag=0PDRpihYrqdSTPnKZNLrgGC57b4ePcfs To: sip:[email protected] Contact: sip:[email protected]:5060;ob Call-ID: Om6UN14p72zw4cF2rCvuQuPNDWfieYof CSeq: 19273 INVITE Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS Supported: replaces, 100rel, timer, norefersub Session-Expires: 1800 Min-SE: 90 Content-Type: application/sdp Content-Length: 343

    v=0 o=- 3860591302 3860591302 IN IP4 192.168.0.115 s=pjmedia b=AS:84 t=0 0 a=X-nat:0 m=audio 4000 RTP/AVP 8 0 120 c=IN IP4 192.168.0.115 b=TIAS:64000 a=rtcp:4001 IN IP4 192.168.0.115 a=sendrecv a=rtpmap:8 PCMA/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:120 telephone-event/8000 a=fmtp:120 0-16 a=ssrc:1248890502 cname:5124631305f8f95f

    --end msg-- 14:28:23.117 d-modem.c .......Call 0 state=CALLING 14:28:23.616 pjsua_core.c .TX 945 bytes Request msg INVITE/cseq=19273 (tdta0x5587aee0fad8) to UDP 81.23.228.137:5060: INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.168.0.115:5060;rport;branch=z9hG4bKPjgkQYwjOBVLHYWf5AB1ykrcoJAwZ.NDbW Max-Forwards: 70 From: sip:[email protected];tag=0PDRpihYrqdSTPnKZNLrgGC57b4ePcfs To: sip:[email protected] Contact: sip:[email protected]:5060;ob Call-ID: Om6UN14p72zw4cF2rCvuQuPNDWfieYof CSeq: 19273 INVITE Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS Supported: replaces, 100rel, timer, norefersub Session-Expires: 1800 Min-SE: 90 Content-Type: application/sdp Content-Length: 343

    v=0 o=- 3860591302 3860591302 IN IP4 192.168.0.115 s=pjmedia b=AS:84 t=0 0 a=X-nat:0 m=audio 4000 RTP/AVP 8 0 120 c=IN IP4 192.168.0.115 b=TIAS:64000 a=rtcp:4001 IN IP4 192.168.0.115 a=sendrecv a=rtpmap:8 PCMA/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:120 telephone-event/8000 a=fmtp:120 0-16 a=ssrc:1248890502 cname:5124631305f8f95f

    --end msg-- 14:28:23.993 pjsua_aud.c Closing sound device after idle for 1 second(s) 14:28:23.993 pjsua_aud.c .Closing null sound device.. 14:28:24.616 pjsua_core.c .TX 945 bytes Request msg INVITE/cseq=19273 (tdta0x5587aee0fad8) to UDP 81.23.228.137:5060: INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.168.0.115:5060;rport;branch=z9hG4bKPjgkQYwjOBVLHYWf5AB1ykrcoJAwZ.NDbW Max-Forwards: 70 From: sip:[email protected];tag=0PDRpihYrqdSTPnKZNLrgGC57b4ePcfs To: sip:[email protected] Contact: sip:[email protected]:5060;ob Call-ID: Om6UN14p72zw4cF2rCvuQuPNDWfieYof CSeq: 19273 INVITE Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS Supported: replaces, 100rel, timer, norefersub Session-Expires: 1800 Min-SE: 90 Content-Type: application/sdp Content-Length: 343

    v=0 o=- 3860591302 3860591302 IN IP4 192.168.0.115 s=pjmedia b=AS:84 t=0 0 a=X-nat:0 m=audio 4000 RTP/AVP 8 0 120 c=IN IP4 192.168.0.115 b=TIAS:64000 a=rtcp:4001 IN IP4 192.168.0.115 a=sendrecv a=rtpmap:8 PCMA/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:120 telephone-event/8000 a=fmtp:120 0-16 a=ssrc:1248890502 cname:5124631305f8f95f

    --end msg-- 14:28:26.617 pjsua_core.c .TX 945 bytes Request msg INVITE/cseq=19273 (tdta0x5587aee0fad8) to UDP 81.23.228.137:5060: INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.168.0.115:5060;rport;branch=z9hG4bKPjgkQYwjOBVLHYWf5AB1ykrcoJAwZ.NDbW Max-Forwards: 70 From: sip:[email protected];tag=0PDRpihYrqdSTPnKZNLrgGC57b4ePcfs To: sip:[email protected] Contact: sip:[email protected]:5060;ob Call-ID: Om6UN14p72zw4cF2rCvuQuPNDWfieYof CSeq: 19273 INVITE Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS Supported: replaces, 100rel, timer, norefersub Session-Expires: 1800 Min-SE: 90 Content-Type: application/sdp Content-Length: 343

    v=0 o=- 3860591302 3860591302 IN IP4 192.168.0.115 s=pjmedia b=AS:84 t=0 0 a=X-nat:0 m=audio 4000 RTP/AVP 8 0 120 c=IN IP4 192.168.0.115 b=TIAS:64000 a=rtcp:4001 IN IP4 192.168.0.115 a=sendrecv a=rtpmap:8 PCMA/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:120 telephone-event/8000 a=fmtp:120 0-16 a=ssrc:1248890502 cname:5124631305f8f95f

    --end msg-- 14:28:30.617 pjsua_core.c .TX 945 bytes Request msg INVITE/cseq=19273 (tdta0x5587aee0fad8) to UDP 81.23.228.137:5060: INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.168.0.115:5060;rport;branch=z9hG4bKPjgkQYwjOBVLHYWf5AB1ykrcoJAwZ.NDbW Max-Forwards: 70 From: sip:[email protected];tag=0PDRpihYrqdSTPnKZNLrgGC57b4ePcfs To: sip:[email protected] Contact: sip:[email protected]:5060;ob Call-ID: Om6UN14p72zw4cF2rCvuQuPNDWfieYof CSeq: 19273 INVITE Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS Supported: replaces, 100rel, timer, norefersub Session-Expires: 1800 Min-SE: 90 Content-Type: application/sdp Content-Length: 343

    v=0 o=- 3860591302 3860591302 IN IP4 192.168.0.115 s=pjmedia b=AS:84 t=0 0 a=X-nat:0 m=audio 4000 RTP/AVP 8 0 120 c=IN IP4 192.168.0.115 b=TIAS:64000 a=rtcp:4001 IN IP4 192.168.0.115 a=sendrecv a=rtpmap:8 PCMA/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:120 telephone-event/8000 a=fmtp:120 0-16 a=ssrc:1248890502 cname:5124631305f8f95f

    --end msg-- 14:28:38.616 pjsua_core.c .TX 945 bytes Request msg INVITE/cseq=19273 (tdta0x5587aee0fad8) to UDP 81.23.228.137:5060: INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.168.0.115:5060;rport;branch=z9hG4bKPjgkQYwjOBVLHYWf5AB1ykrcoJAwZ.NDbW Max-Forwards: 70 From: sip:[email protected];tag=0PDRpihYrqdSTPnKZNLrgGC57b4ePcfs To: sip:[email protected] Contact: sip:[email protected]:5060;ob Call-ID: Om6UN14p72zw4cF2rCvuQuPNDWfieYof CSeq: 19273 INVITE Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS Supported: replaces, 100rel, timer, norefersub Session-Expires: 1800 Min-SE: 90 Content-Type: application/sdp Content-Length: 343

    v=0 o=- 3860591302 3860591302 IN IP4 192.168.0.115 s=pjmedia b=AS:84 t=0 0 a=X-nat:0 m=audio 4000 RTP/AVP 8 0 120 c=IN IP4 192.168.0.115 b=TIAS:64000 a=rtcp:4001 IN IP4 192.168.0.115 a=sendrecv a=rtpmap:8 PCMA/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:120 telephone-event/8000 a=fmtp:120 0-16 a=ssrc:1248890502 cname:5124631305f8f95f

    --end msg-- 14:28:54.617 pjsua_core.c .TX 945 bytes Request msg INVITE/cseq=19273 (tdta0x5587aee0fad8) to UDP 81.23.228.137:5060: INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.168.0.115:5060;rport;branch=z9hG4bKPjgkQYwjOBVLHYWf5AB1ykrcoJAwZ.NDbW Max-Forwards: 70 From: sip:[email protected];tag=0PDRpihYrqdSTPnKZNLrgGC57b4ePcfs To: sip:[email protected] Contact: sip:[email protected]:5060;ob Call-ID: Om6UN14p72zw4cF2rCvuQuPNDWfieYof CSeq: 19273 INVITE Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS Supported: replaces, 100rel, timer, norefersub Session-Expires: 1800 Min-SE: 90 Content-Type: application/sdp Content-Length: 343

    v=0 o=- 3860591302 3860591302 IN IP4 192.168.0.115 s=pjmedia b=AS:84 t=0 0 a=X-nat:0 m=audio 4000 RTP/AVP 8 0 120 c=IN IP4 192.168.0.115 b=TIAS:64000 a=rtcp:4001 IN IP4 192.168.0.115 a=sendrecv a=rtpmap:8 PCMA/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:120 telephone-event/8000 a=fmtp:120 0-16 a=ssrc:1248890502 cname:5124631305f8f95f

    --end msg-- 14:28:55.116 pjsua_media.c ....Call 0: deinitializing media.. 14:28:55.116 pjsua_media.c .....Call 0: cleaning up provisional media, prov_med_cnt=1, med_cnt=0 14:28:55.116 d-modem.c ....Call 0 state=DISCONNCTD 14:28:55.116 pjsua_core.c ....Shutting down, flags=0... 14:28:55.116 pjsua_core.c ....PJSUA state changed: RUNNING --> CLOSING 14:28:55.116 pjsua_core.c ....Error joining worker thread: Operation cancelled (PJ_ECANCELLED) <535.116899> main: lost connection to child socket process <535.116908> slamr0: modem_hup...2 <535.116911> slamr0: modem set state: 2 --> 9... <535.116914> slamr0: new state: DP_DISC <535.116916> slamr0: modem_stop.. <535.116918> main: socket_stop... 14:28:56.116 pjsua_call.c .....Hangup all calls.. 14:28:56.116 pjsua_call.c ......Call 0 hanging up: code=0.. 14:28:56.116 pjsua_media.c .......Call 0: deinitializing media.. 14:28:56.116 d-modem.c .......Call 0 state=DISCONNCTD 14:28:56.116 pjsua_call.c .......Failed to create end session message: INVITE session already terminated (PJSIP_ESESSIONTERMINATED) [status=171140] 14:28:56.117 pjsua_call.c .......Will retry call 0 hangup in 5000 msec 14:28:56.117 pjsua_media.c .....Call 0: deinitializing media.. 14:28:56.117 pjsua_media.c .....Call 1: deinitializing media.. 14:28:56.117 pjsua_media.c .....Call 2: deinitializing media.. 14:28:56.117 pjsua_media.c .....Call 3: deinitializing media.. 14:28:56.117 pjsua_pres.c .....Shutting down presence.. 14:28:57.122 pjsua_core.c .....Destroying... 14:28:57.122 pjsua_media.c .....Shutting down media.. 14:28:57.492 sip_transaction.c .....Stopping transaction layer module 14:28:57.492 sip_transaction.c .....Stopped transaction layer module 14:28:57.492 sip_endpoint.c .....Module "mod-unsolicited-mwi" unregistered 14:28:57.492 sip_endpoint.c .....Module "mod-pjsua-options" unregistered 14:28:57.492 sip_endpoint.c .....Module "mod-pjsua-im" unregistered 14:28:57.492 sip_endpoint.c .....Module "mod-pjsua-pres" unregistered 14:28:57.492 sip_endpoint.c .....Module "mod-pjsua" unregistered 14:28:57.492 sip_endpoint.c .....Module "mod-stateful-util" unregistered 14:28:57.492 sip_endpoint.c .....Module "mod-refer" unregistered 14:28:57.492 sip_endpoint.c .....Module "mod-mwi" unregistered 14:28:57.492 sip_endpoint.c .....Module "mod-presence" unregistered 14:28:57.492 sip_endpoint.c .....Module "mod-evsub" unregistered 14:28:57.492 sip_endpoint.c .....Module "mod-invite" unregistered 14:28:57.492 sip_endpoint.c .....Module "mod-100rel" unregistered 14:28:57.492 sip_endpoint.c .....Module "mod-ua" unregistered 14:28:57.492 sip_transaction.c .....Transaction layer module destroyed 14:28:57.492 sip_endpoint.c .....Module "mod-tsx-layer" unregistered 14:28:57.492 sip_endpoint.c .....Module "mod-msg-print" unregistered 14:28:57.492 sip_endpoint.c .....Module "mod-pjsua-log" unregistered 14:28:57.493 udp0x5587aee01fb0 .....SIP UDP transport destroyed 14:28:57.493 sip_transport.c .....Warning: 1 transmit buffer(s) not freed! 14:28:57.493 timer.c .....Dumping timer heap: 14:28:57.493 timer.c ..... Cur size: 1 entries, max: 3070 14:28:57.493 timer.c ..... Entries: 14:28:57.493 timer.c ..... _id Id Elapsed Source 14:28:57.493 timer.c ..... ---------------------------------- 14:28:57.493 timer.c ..... 4 1 3.623 ../src/pjsua-lib/pjsua_call.c:2848 14:28:57.493 sip_endpoint.c .....Endpoint 0x5587aed386d8 destroyed 14:28:57.493 dlg0x5587aee07750 .....Pool is not released by application, releasing now 14:28:57.493 glck0x5587aee07f60 .....Pool is not released by application, releasing now 14:28:57.493 inv0x5587aee07750 .....Pool is not released by application, releasing now 14:28:57.493 inv0x5587aee07750 .....Pool is not released by application, releasing now 14:28:57.493 tdta0x5587aee0fad8 .....Pool is not released by application, releasing now 14:28:57.493 tsx0x5587aee12a48 .....Pool is not released by application, releasing now 14:28:57.493 glck0x5587aee131b0 .....Pool is not released by application, releasing now 14:28:57.493 pjsua_core.c .....PJSUA state changed: CLOSING --> NULL 14:28:57.493 pjsua_core.c .....PJSUA destroyed... <537.494377> slamr0: modem set hook: 1 --> 0... <537.494386> main: socket_ioctl: cmd 2, arg 0... <537.494388> main: socket_ioctl: returning 0 <537.494389> main: socket_ioctl: cmd 8, arg 0... <537.494394> call: delete... <537.494396> Dialer was aborted. <537.494397> CALLPROG_Delete is entered <537.494398> cadence_delete with CADENCE_DIAL_OBJ is invoked <537.494399> cadence_delete with CADENCE_OBJ is invoked <537.494401> CALLPROG_Delete is exited <537.494403> slamr0: modem set state: 9 --> 1... <537.494404> slamr0: new state: MODEM_IDLE <537.494405> slamr0: modem report result: 3 (NO CARRIER) *** buffer overflow detected ***: terminated Aborted (core dumped)

    opened by dshaner 1
  • Question - Can D-Modem be used along with slmodemd and pppd as a diap-up server?

    Question - Can D-Modem be used along with slmodemd and pppd as a diap-up server?

    Can D-Modem be used along with slmodemd and pppd as a dial-up server, entirely in software with a modem pool? Replacing an analog phone line with a SIP server, like asterisk, with extensions and a upstream ISP SIP server.

    opened by arf20 0
  • Using the D-Modem to connect to network server

    Using the D-Modem to connect to network server

    I am to connect to a server that can only be accessed via a dial-up connection. Is it possible to connect using D-Modem? I am able to get connected to the modem and enter the username/password, but I am unable to do anything with the connection/

    opened by dshaner 0
  • Cannot open data.d-modem

    Cannot open data.d-modem

    I've just pulled down the source and compiled it on Ubuntu 20.04 and when I run it I get the following;

    cannot open '/var/lib/slmodem/data.d-modem': No such file or directory

    I don't appear to be able to make any SIP calls so wonder if that's why?

    opened by nelgin 1
  • Modem doesn't make call on Debian 10

    Modem doesn't make call on Debian 10

    Here is logs:

    [email protected]:/home/pbx/D-Modem# ./slmodemd/slmodemd -d9 -e /home/pbx/D-Modem/d-modem SmartLink Soft Modem: version 2.9.11 Dec 10 2021 15:33:02 <763.529273> SmartLink Soft Modem: version 2.9.11 Dec 10 2021 15:33:02 <763.529295> d-modem: startup modem... <763.529721> d-modem: update termios... symbolic link/dev/ttySL0' -> /dev/pts/1' created. modemd-modem' created. TTY is /dev/pts/1' <763.529786> open file: /var/lib/slmodem/data.d-modem... <763.530377> main: rt applyed: SCHED_FIFO, pri 99 <763.530461> main: dropped privileges to 65534.65534 Use/dev/ttySL0' as modem device, Ctrl+C for termination. <769.464756> main: termios changed. <769.464773> d-modem: update termios... <770.120757> d-modem: run cmd: ATX3 <770.120775> d-modem: modem report result: 0 (OK) <772.711515> d-modem: run cmd: ATE0 <772.711530> d-modem: modem report result: 0 (OK) <775.167933> d-modem: run cmd: ATE1 <775.167952> d-modem: modem report result: 0 (OK) <777.768276> d-modem: run cmd: ATD1009 <777.768304> d-modem: modem dial: 1009... <777.768310> d-modem: modem_dial_start... <777.768316> call: create... <777.768329> CallProgFP_Create >> <777.768342> APPLY_FILTER = 0 <777.768348> Detection Thresholds: levle_fix=43,--> LEVEL_THRESHOLD=96 <777.768352> ============> 6 <777.768354> Cadence: Busy Tone loose detection is 0 <777.768358> TYPE BUSY <777.768361> Filter index 6 <777.768363> Filter SubIndex 0 <777.768365> MAX_ON_TIME 30 Buffers MIN_ON_TIME 9 Buffers <777.768369> MAX_OFF_TIME 30 Buffers MIN_OFF_TIME 9 Buffers <777.768371> OFF_TIME_THAT_RESETS_CYCLE 90 <777.768373> BUFFER LENGTH 160 samples. <777.768376> INTEGRATION_LENGTH 0[ms] <777.768378> LEVEL 96 <777.768382> INTEGRATION_TIME = 0 Buffers. <777.768385> Detection Thresholds: levle_fix=43,--> LEVEL_THRESHOLD=96 <777.768388> TYPE DIAL <777.768392> Filter index 5 <777.768394> Filter SubIndex 0 <777.768395> MAX_ON_TIME 0 Buffers MIN_ON_TIME 0 Buffers <777.768398> MAX_OFF_TIME 0 Buffers MIN_OFF_TIME 0 Buffers <777.768401> OFF_TIME_THAT_RESETS_CYCLE 0 <777.768403> BUFFER LENGTH 666 samples. <777.768405> INTEGRATION_LENGTH 2500[ms] <777.768408> LEVEL 96 <777.768411> INTEGRATION_TIME = 28 Buffers. <777.768416> CALLPROG Create << <777.768424> CALLPROG Dialing <777.768427> Configuration->tone_DigitLength 100 <777.768429> Configuration->pulse_OffHookTime 36 <777.768431> Configuration->pulse_OnHookTime 64 <777.768434> Configuration->dialPauseTime 2 <777.768437> Configuration->flashTime 50 <777.768439> Configuration->toneOrPulseFlag 0 <777.768441> Configuration->dialModifierValidationFlag 0 <777.768444> Configuration->ABCD_PermittedFlag 0 <777.768446> Configuration->pulseAndToneInSameStringPermittedFlag 0 <777.768449> Configuration->callingToneFlag 0 <777.768452> Configuration->commaPauseDurLimit 255 <777.768454> Configuration->digitPattern 1 <777.768456> Configuration->tone_BetweenDigitsInterval 100 <777.768459> Configuration->pulse_BetweenDigitsInterval 800 <777.768462> DTMF_Gain1 = 13014 <777.768464> DTMF_Gain2 = 16384 <777.768467> AnalyzeDialString: Updated 17 May 1999 00:50 <777.768469> Dial String Syntax is VALID <777.768473> GetNoAnswerTimeOut. 60 <777.768480> BlindCall: GetBlindDialPause = 2 . <777.768483> CALLPROG_Dial was exited. <777.768485> call: create RC: 9600 <-> 8000... <777.768497> d-modem: modem_start.. <777.768499> d-modem: modem set state: 1 --> 2... <777.768502> d-modem: new state: DP_ESTAB <777.768504> main: socket_ioctl: cmd 8, arg 3... <777.768508> d-modem: modem set hook: 0 --> 1... <777.768510> main: socket_ioctl: cmd 2, arg 1... <777.768513> main: socket_ioctl: returning 0 <777.768517> main: socket_ioctl: cmd 11, arg 0... <777.768519> main: socket_ioctl: returning 4 <777.768563> main: socket_ioctl: cmd 4, arg 2580... <777.768567> main: socket_ioctl: returning 0 <777.768570> main: socket_ioctl: cmd 7, arg 30... <777.768577> main: socket_ioctl: returning 0 <777.768582> main: socket_start... <777.768741> main: done delay thing `

    opened by rgwan 2
Owner
Aon's Cyber Labs
Research and Development - Aon's Cyber Solutions
Aon's Cyber Labs
Nagios Plugin to check Call Quality in SIP VoIP (compatible checkmk, etc)

sipnagios Nagios Plugin to check Call Quality in SIP VoIP (compatible with check_mk, Zabbix, etc) sipnagios implements the Nagios plugin API for monit

null 26 Dec 17, 2022
Linux Terminal Service Manager (LTSM) is a set of service programs that allows remote computers to connect to a Linux operating system computer using a remote terminal session (over VNC or RDP)

Linux Terminal Service Manager (LTSM) is a set of service programs that allows remote computers to connect to a Linux operating system computer using a remote terminal session (over VNC)

null 34 Dec 16, 2022
Enable eGFX for Thunderbolt Macs with SIP, ART & FileVault support.

Kryptonite enables external GPUs on Macs using Thunderbolt 1 and 2 without compromising on Mac security features such as System Integrity Protection, FileVault, and Authenticated-Root.

Mayank Kumar 143 Jan 3, 2023
Husarnet is a Peer-to-Peer VPN to connect your laptops, servers and microcontrollers over the Internet with zero configuration.

Husarnet Client Husarnet is a Peer-to-Peer VPN to connect your laptops, servers and microcontrollers over the Internet with zero configuration. Key fe

Husarnet 180 Jan 1, 2023
Open hardware to measure EC and pH, drive pumps, and otherwise manage a mid-size hydroponic grow over Wi-Fi.

Hydromisc This is a single PCBA with all the necessary I/O to automate a typical small to mid-size hydroponic grow, controllable over Wi-Fi

null 480 Dec 12, 2022
LAN Party VPN - Run VPN on top of Discord. No installation required.

LAN Party VPN - VPN for Virtual LAN Parties Have you ever wanted to play a classic game with your friends but not able to because you or your friends

Yifan Gu 283 Dec 14, 2022
The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.

Welcome! The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design

Microsoft 7.2k Dec 30, 2022
C++ Kite Connect API library / SDK

Kite Connect API C++ client Overview Dependencies Getting dependencies Linux Others & uWS v0.14 Building & installation Examples REST API Ticker Docum

Zerodha Technology 27 Dec 30, 2022
Cross-connect Linux interfaces with XDP

Cross-connect Linux interfaces with XDP redirect xdp-xconnect daemon is a long-running process that uses a YAML file as its configuration API. For exa

Michael Kashin 50 Dec 9, 2022
OceanBase Client for C. A driver to connect applications developed in C language to OceanBase Database.

Oceanbase Client for C OceanBase Client for C is a driver used to connect applications developed in C to OceanBase Database Server. Compatibility Serv

OceanBase 22 Nov 8, 2022
An implementation of the Mobile Adapter GB protocol, to connect to custom game servers.

libmobile Library that implements the Mobile Adapter GB protocol, in a way that should be easy to integrate into a plethora of different emulators/har

REON Team 10 Nov 5, 2022
Unofficial Linux client for the Adobe Connect meeting application

Unofficial Adobe Connect Client for Linux Description: Adobe Connect does not have a linux version officially, however, since it's written in flash, i

Mahan Lamee 16 Dec 28, 2022
A forward proxy module for CONNECT request handling

name This module provides support for the CONNECT method request. This method is mainly used to tunnel SSL requests through proxy servers. Table of Co

Xiaochen Wang 1.3k Jan 4, 2023
(Test assignment) Transfer files over the network using a homegrown UDP protocol

Требования Linux x86_64 gcc >= 4.9 (C++11) Сборка $ make Запуск $ make run -j5 -j5 позволяет серверу и четырём клиентам запуститься одновременно. В

Alexander Batischev 2 Dec 18, 2021
QUIC, a multiplexed stream transport over UDP

QUIC, a multiplexed stream transport over UDP QUIC is an experimental protocol aimed at reducing web latency over that of TCP. On the surface, QUIC is

Devsisters Corp. 1.7k Dec 31, 2022
Warp speed Data Transfer (WDT) is an embeddedable library (and command line tool) aiming to transfer data between 2 systems as fast as possible over multiple TCP paths.

WDT Warp speed Data Transfer Design philosophy/Overview Goal: Lowest possible total transfer time - to be only hardware limited (disc or network bandw

Facebook 2.7k Dec 31, 2022
Reliable & unreliable messages over UDP. Robust message fragmentation & reassembly. P2P networking / NAT traversal. Encryption.

GameNetworkingSockets GameNetworkingSockets is a basic transport layer for games. The features are: Connection-oriented API (like TCP) ... but message

Valve Software 6.4k Dec 30, 2022
Realtime Client/Server app for Linux allowing joystick (and other HID) data to be transferred over a local network

netstick What is it? Netstick enables HID devices to be remotely connected between a "client" and "server" over a network connection. It allows the ke

null 33 Nov 6, 2022
A linux based file-transfer system in terminal. Share Files Over A Network

Introduction A linux based file-transfer system in terminal. Share Files Over A Network Note This Project Is Not Fully Completed Yet But You Are Free

notaweeb 8 Sep 20, 2021