Giter Club home page Giter Club logo

d-modem's Introduction

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         <OTM> 
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

d-modem's People

Contributors

dbastone-aon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

d-modem's Issues

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)

slmodemd does not receive connection from dialup number

I followed the instruction, so far so good but after tried to call the atd13... number in the example (atomic clock)
I got
[root@node117 D-Modem]# ./slmodemd/slmodemd -d9 -e ./d-modem
SmartLink Soft Modem: version 2.9.11 Oct 19 2023 21:36:37
<332.896907> SmartLink Soft Modem: version 2.9.11 Oct 19 2023 21:36:37
<332.896917> d-modem: startup modem...
<332.896986> d-modem: update termios...
symbolic link /dev/ttySL0' -> /dev/pts/1' created.
modem d-modem' created. TTY is /dev/pts/1'
<332.897119> open file: /var/lib/slmodem/data.d-modem...
<332.897439> main: rt applyed: SCHED_FIFO, pri 99
<332.897475> main: dropped privileges to 99.99
Use `/dev/ttySL0' as modem device, Ctrl+C for termination.
<335.434190> main: termios changed.
<335.434202> d-modem: update termios...
<336.770057> d-modem: run cmd: atx3
<336.770069> d-modem: modem report result: 0 (OK)
<349.654289> d-modem: run cmd: at+ms=132,0,4800,9600
<349.654304> d-modem: modem report result: 0 (OK)
<391.710197> d-modem: run cmd: atd0000013034944774
<391.710210> d-modem: modem dial: 0000013034944774...
<391.710214> d-modem: modem_dial_start...
<391.710217> call: create...
<391.710223> CallProgFP_Create >>
<391.710226> APPLY_FILTER = 0
<391.710230> Detection Thresholds: levle_fix=43,--> LEVEL_THRESHOLD=96
<391.710234> ============> 6
<391.710238> Cadence: Busy Tone loose detection is 0
<391.710243> TYPE BUSY
<391.710246> Filter index 6
<391.710249> Filter SubIndex 0
<391.710251> MAX_ON_TIME 30 Buffers MIN_ON_TIME 9 Buffers
<391.710254> MAX_OFF_TIME 30 Buffers MIN_OFF_TIME 9 Buffers
<391.710257> OFF_TIME_THAT_RESETS_CYCLE 90
<391.710260> BUFFER LENGTH 160 samples.
<391.710262> INTEGRATION_LENGTH 0[ms]
<391.710265> LEVEL 96
<391.710269> INTEGRATION_TIME = 0 Buffers.
<391.710272> Detection Thresholds: levle_fix=43,--> LEVEL_THRESHOLD=96
<391.710275> TYPE DIAL
<391.710278> Filter index 5
<391.710280> Filter SubIndex 0
<391.710283> MAX_ON_TIME 0 Buffers MIN_ON_TIME 0 Buffers
<391.710287> MAX_OFF_TIME 0 Buffers MIN_OFF_TIME 0 Buffers
<391.710291> OFF_TIME_THAT_RESETS_CYCLE 0
<391.710295> BUFFER LENGTH 666 samples.
<391.710298> INTEGRATION_LENGTH 2500[ms]
<391.710302> LEVEL 96
<391.710306> INTEGRATION_TIME = 28 Buffers.
<391.710310> CALLPROG Create <<
<391.710314> CALLPROG Dialing
<391.710318> Configuration->tone_DigitLength 100
<391.710321> Configuration->pulse_OffHookTime 36
<391.710325> Configuration->pulse_OnHookTime 64
<391.710328> Configuration->dialPauseTime 2
<391.710332> Configuration->flashTime 50
<391.710335> Configuration->toneOrPulseFlag 0
<391.710339> Configuration->dialModifierValidationFlag 0
<391.710342> Configuration->ABCD_PermittedFlag 0
<391.710346> Configuration->pulseAndToneInSameStringPermittedFlag 0
<391.710350> Configuration->callingToneFlag 0
<391.710353> Configuration->commaPauseDurLimit 255
<391.710357> Configuration->digitPattern 1
<391.710360> Configuration->tone_BetweenDigitsInterval 100
<391.710364> Configuration->pulse_BetweenDigitsInterval 800
<391.710368> DTMF_Gain1 = 13014
<391.710371> DTMF_Gain2 = 16384
<391.710375> AnalyzeDialString: Updated 17 May 1999 00:50
<391.710378> Dial String Syntax is VALID
<391.710383> GetNoAnswerTimeOut. 60
<391.710387> BlindCall: GetBlindDialPause = 2 .
<391.710390> CALLPROG_Dial was exited.
<391.710394> call: create RC: 9600 <-> 8000...
<391.710399> d-modem: modem_start..
<391.710402> d-modem: modem set state: 1 --> 2...
<391.710406> d-modem: new state: DP_ESTAB
<391.710410> main: socket_ioctl: cmd 8, arg 3...
<391.710414> d-modem: modem set hook: 0 --> 1...
<391.710417> main: socket_ioctl: cmd 2, arg 1...
<391.710430> main: socket_ioctl: returning 0
<391.710435> main: socket_ioctl: cmd 11, arg 0...
<391.710438> main: socket_ioctl: returning 4
<391.710455> main: socket_ioctl: cmd 4, arg 2580...
<391.710459> main: socket_ioctl: returning 0
<391.710463> main: socket_ioctl: cmd 7, arg 30...
<391.710466> main: socket_ioctl: returning 0
<391.710470> main: socket_start...
<391.710608> main: done delay thing

error: dev read: Bad address
<719.012312> d-modem: modem_hup...2
<719.012321> d-modem: modem set state: 2 --> 9...
<719.012326> d-modem: new state: DP_DISC
<719.012334> d-modem: modem_stop..
<719.012339> main: socket_stop...
<719.012348> d-modem: modem set hook: 1 --> 0...
<719.012352> main: socket_ioctl: cmd 2, arg 0...
<719.012357> main: socket_ioctl: returning 0
<719.012360> main: socket_ioctl: cmd 8, arg 0...
<719.012374> call: delete...
<719.012385> Dialer was aborted.
<719.012389> CALLPROG_Delete is entered
<719.012392> cadence_delete with CADENCE_DIAL_OBJ is invoked
<719.012405> cadence_delete with CADENCE_OBJ is invoked
<719.012409> CALLPROG_Delete is exited
<719.012420> d-modem: modem set state: 9 --> 1...
<719.012432> d-modem: new state: MODEM_IDLE
<719.012443> d-modem: modem report result: 3 (NO CARRIER)

but no connection I guess.. any clue?

dsplibs.o source code

Is the source code for the dsplibs.o file available? I'm trying to build this on ARMv7 (Raspberry Pi) and this file is only available as a 32bit i386 binary blob currently

Modem doesn't make call on Debian 10

Here is logs:

root@shsipmdmpool01:/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. modem d-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
`

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/

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?

Build error

Hello,

I'm on Debian 12 (32bit) (Linux srv-d-modem 6.1.0-11-686-pae #1 SMP PREEMPT_DYNAMIC Debian 6.1.38-4 (2023-08-08) i686 GNU/Linux), when i build Make return this error. Can you help me ?

Thank you

gcc -c -Wall -DPJ_AUTOCONF=1 -O2 -DPJ_IS_BIG_ENDIAN=0 -DPJ_IS_LITTLE_ENDIAN=1 -I. -I../../webrtc/src -I../../../pjlib/include -fexceptions -DWEBRTC_POSIX=1 \ -o output/libwebrtc-i686-pc-linux-gnu/modules/audio_processing/aec/aec_core_sse2.o \ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c: In function ‘mm_pow_ps’: ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:221:1: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi] 221 | static __m128 mm_pow_ps(__m128 a, __m128 b) { | ^~~~~~ In file included from /usr/lib/gcc/i686-linux-gnu/12/include/emmintrin.h:31, from ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:15: /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h: In function ‘FilterFarSSE2’: /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:981:1: error: inlining failed in call to ‘always_inline’ ‘_mm_storeu_ps’: target specific option mismatch 981 | _mm_storeu_ps (float *__P, __m128 __A) | ^~~~~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:61:7: note: called from here 61 | _mm_storeu_ps(&yf[1][j], h); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:981:1: error: inlining failed in call to ‘always_inline’ ‘_mm_storeu_ps’: target specific option mismatch 981 | _mm_storeu_ps (float *__P, __m128 __A) | ^~~~~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:60:7: note: called from here 60 | _mm_storeu_ps(&yf[0][j], g); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:184:1: error: inlining failed in call to ‘always_inline’ ‘_mm_add_ps’: target specific option mismatch 184 | _mm_add_ps (__m128 __A, __m128 __B) | ^~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:59:24: note: called from here 59 | const __m128 h = _mm_add_ps(yf_im, f); | ^~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:184:1: error: inlining failed in call to ‘always_inline’ ‘_mm_add_ps’: target specific option mismatch 184 | _mm_add_ps (__m128 __A, __m128 __B) | ^~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:58:24: note: called from here 58 | const __m128 g = _mm_add_ps(yf_re, e); | ^~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:184:1: error: inlining failed in call to ‘always_inline’ ‘_mm_add_ps’: target specific option mismatch 184 | _mm_add_ps (__m128 __A, __m128 __B) | ^~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:57:24: note: called from here 57 | const __m128 f = _mm_add_ps(c, d); | ^~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:190:1: error: inlining failed in call to ‘always_inline’ ‘_mm_sub_ps’: target specific option mismatch 190 | _mm_sub_ps (__m128 __A, __m128 __B) | ^~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:56:24: note: called from here 56 | const __m128 e = _mm_sub_ps(a, b); | ^~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:196:1: error: inlining failed in call to ‘always_inline’ ‘_mm_mul_ps’: target specific option mismatch 196 | _mm_mul_ps (__m128 __A, __m128 __B) | ^~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:55:24: note: called from here 55 | const __m128 d = _mm_mul_ps(xfBuf_im, wfBuf_re); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:196:1: error: inlining failed in call to ‘always_inline’ ‘_mm_mul_ps’: target specific option mismatch 196 | _mm_mul_ps (__m128 __A, __m128 __B) | ^~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:54:24: note: called from here 54 | const __m128 c = _mm_mul_ps(xfBuf_re, wfBuf_im); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:196:1: error: inlining failed in call to ‘always_inline’ ‘_mm_mul_ps’: target specific option mismatch 196 | _mm_mul_ps (__m128 __A, __m128 __B) | ^~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:53:24: note: called from here 53 | const __m128 b = _mm_mul_ps(xfBuf_im, wfBuf_im); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:196:1: error: inlining failed in call to ‘always_inline’ ‘_mm_mul_ps’: target specific option mismatch 196 | _mm_mul_ps (__m128 __A, __m128 __B) | ^~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:52:24: note: called from here 52 | const __m128 a = _mm_mul_ps(xfBuf_re, wfBuf_re); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:932:1: error: inlining failed in call to ‘always_inline’ ‘_mm_loadu_ps’: target specific option mismatch 932 | _mm_loadu_ps (float const *__P) | ^~~~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:51:28: note: called from here 51 | const __m128 yf_im = _mm_loadu_ps(&yf[1][j]); | ^~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:932:1: error: inlining failed in call to ‘always_inline’ ‘_mm_loadu_ps’: target specific option mismatch 932 | _mm_loadu_ps (float const *__P) | ^~~~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:50:28: note: called from here 50 | const __m128 yf_re = _mm_loadu_ps(&yf[0][j]); | ^~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:932:1: error: inlining failed in call to ‘always_inline’ ‘_mm_loadu_ps’: target specific option mismatch 932 | _mm_loadu_ps (float const *__P) | ^~~~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:49:31: note: called from here 49 | const __m128 wfBuf_im = _mm_loadu_ps(&aec->wfBuf[1][pos + j]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:932:1: error: inlining failed in call to ‘always_inline’ ‘_mm_loadu_ps’: target specific option mismatch 932 | _mm_loadu_ps (float const *__P) | ^~~~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:48:31: note: called from here 48 | const __m128 wfBuf_re = _mm_loadu_ps(&aec->wfBuf[0][pos + j]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:932:1: error: inlining failed in call to ‘always_inline’ ‘_mm_loadu_ps’: target specific option mismatch 932 | _mm_loadu_ps (float const *__P) | ^~~~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:47:31: note: called from here 47 | const __m128 xfBuf_im = _mm_loadu_ps(&aec->xfBuf[1][xPos + j]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:932:1: error: inlining failed in call to ‘always_inline’ ‘_mm_loadu_ps’: target specific option mismatch 932 | _mm_loadu_ps (float const *__P) | ^~~~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:46:31: note: called from here 46 | const __m128 xfBuf_re = _mm_loadu_ps(&aec->xfBuf[0][xPos + j]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:981:1: error: inlining failed in call to ‘always_inline’ ‘_mm_storeu_ps’: target specific option mismatch 981 | _mm_storeu_ps (float *__P, __m128 __A) | ^~~~~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:61:7: note: called from here 61 | _mm_storeu_ps(&yf[1][j], h); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:981:1: error: inlining failed in call to ‘always_inline’ ‘_mm_storeu_ps’: target specific option mismatch 981 | _mm_storeu_ps (float *__P, __m128 __A) | ^~~~~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:60:7: note: called from here 60 | _mm_storeu_ps(&yf[0][j], g); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:184:1: error: inlining failed in call to ‘always_inline’ ‘_mm_add_ps’: target specific option mismatch 184 | _mm_add_ps (__m128 __A, __m128 __B) | ^~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:59:24: note: called from here 59 | const __m128 h = _mm_add_ps(yf_im, f); | ^~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:184:1: error: inlining failed in call to ‘always_inline’ ‘_mm_add_ps’: target specific option mismatch 184 | _mm_add_ps (__m128 __A, __m128 __B) | ^~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:58:24: note: called from here 58 | const __m128 g = _mm_add_ps(yf_re, e); | ^~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:184:1: error: inlining failed in call to ‘always_inline’ ‘_mm_add_ps’: target specific option mismatch 184 | _mm_add_ps (__m128 __A, __m128 __B) | ^~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:57:24: note: called from here 57 | const __m128 f = _mm_add_ps(c, d); | ^~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:190:1: error: inlining failed in call to ‘always_inline’ ‘_mm_sub_ps’: target specific option mismatch 190 | _mm_sub_ps (__m128 __A, __m128 __B) | ^~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:56:24: note: called from here 56 | const __m128 e = _mm_sub_ps(a, b); | ^~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:196:1: error: inlining failed in call to ‘always_inline’ ‘_mm_mul_ps’: target specific option mismatch 196 | _mm_mul_ps (__m128 __A, __m128 __B) | ^~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:55:24: note: called from here 55 | const __m128 d = _mm_mul_ps(xfBuf_im, wfBuf_re); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:196:1: error: inlining failed in call to ‘always_inline’ ‘_mm_mul_ps’: target specific option mismatch 196 | _mm_mul_ps (__m128 __A, __m128 __B) | ^~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:54:24: note: called from here 54 | const __m128 c = _mm_mul_ps(xfBuf_re, wfBuf_im); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:196:1: error: inlining failed in call to ‘always_inline’ ‘_mm_mul_ps’: target specific option mismatch 196 | _mm_mul_ps (__m128 __A, __m128 __B) | ^~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:53:24: note: called from here 53 | const __m128 b = _mm_mul_ps(xfBuf_im, wfBuf_im); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:196:1: error: inlining failed in call to ‘always_inline’ ‘_mm_mul_ps’: target specific option mismatch 196 | _mm_mul_ps (__m128 __A, __m128 __B) | ^~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:52:24: note: called from here 52 | const __m128 a = _mm_mul_ps(xfBuf_re, wfBuf_re); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:932:1: error: inlining failed in call to ‘always_inline’ ‘_mm_loadu_ps’: target specific option mismatch 932 | _mm_loadu_ps (float const *__P) | ^~~~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:51:28: note: called from here 51 | const __m128 yf_im = _mm_loadu_ps(&yf[1][j]); | ^~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:932:1: error: inlining failed in call to ‘always_inline’ ‘_mm_loadu_ps’: target specific option mismatch 932 | _mm_loadu_ps (float const *__P) | ^~~~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:50:28: note: called from here 50 | const __m128 yf_re = _mm_loadu_ps(&yf[0][j]); | ^~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:932:1: error: inlining failed in call to ‘always_inline’ ‘_mm_loadu_ps’: target specific option mismatch 932 | _mm_loadu_ps (float const *__P) | ^~~~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:49:31: note: called from here 49 | const __m128 wfBuf_im = _mm_loadu_ps(&aec->wfBuf[1][pos + j]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:932:1: error: inlining failed in call to ‘always_inline’ ‘_mm_loadu_ps’: target specific option mismatch 932 | _mm_loadu_ps (float const *__P) | ^~~~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:48:31: note: called from here 48 | const __m128 wfBuf_re = _mm_loadu_ps(&aec->wfBuf[0][pos + j]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:932:1: error: inlining failed in call to ‘always_inline’ ‘_mm_loadu_ps’: target specific option mismatch 932 | _mm_loadu_ps (float const *__P) | ^~~~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:47:31: note: called from here 47 | const __m128 xfBuf_im = _mm_loadu_ps(&aec->xfBuf[1][xPos + j]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/lib/gcc/i686-linux-gnu/12/include/xmmintrin.h:932:1: error: inlining failed in call to ‘always_inline’ ‘_mm_loadu_ps’: target specific option mismatch 932 | _mm_loadu_ps (float const *__P) | ^~~~~~~~~~~~ ../../webrtc/src/webrtc//modules/audio_processing/aec/aec_core_sse2.c:46:31: note: called from here 46 | const __m128 xfBuf_re = _mm_loadu_ps(&aec->xfBuf[0][xPos + j]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ make[4]: *** [/root/D-Modem/pjproject-2.11.1/build/rules.mak:163 : output/libwebrtc-i686-pc-linux-gnu/modules/audio_processing/aec/aec_core_sse2.o] Erreur 1 make[4] : on quitte le répertoire « /root/D-Modem/pjproject-2.11.1/third_party/build/webrtc » make[3]: *** [Makefile:89 : libwebrtc-i686-pc-linux-gnu.a] Erreur 2 make[3] : on quitte le répertoire « /root/D-Modem/pjproject-2.11.1/third_party/build/webrtc » make[2]: *** [Makefile:7 : all] Erreur 1 make[2] : on quitte le répertoire « /root/D-Modem/pjproject-2.11.1/third_party/build » make[1]: *** [Makefile:14 : all] Erreur 1 make[1] : on quitte le répertoire « /root/D-Modem/pjproject-2.11.1 » make: *** [Makefile:8 : pjsip.install/lib/pkgconfig/libpjproject.pc] Erreur 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.