All pages
Powered by GitBook
1 of 1

Loading...

Using a Huawei E173 USB Modem for Calls (chan_dongle)

Connecting a Huawei E173 3G USB modem to MikoPBX via chan_dongle

The Huawei E173 is a USB 3G modem from Huawei that is compatible with the chan_dongle module for Asterisk. By using this modem with chan_dongle, you can configure Asterisk to make voice calls and send SMS messages over the GSM network, effectively turning the modem into a full-fledged GSM gateway.

Dongle modems can be unstable. They require reliable, stable power and a strong GSM signal.

Preparing the USB Modem

  1. First, let’s see which USB devices are connected to the PC:

lsusb
Bus 001 Device 002: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

We’re interested in the device "12d1:1001 Huawei Technologies...".

  • 12d1 – the vendor ID.

  • 1001 – the product ID.

For the modem to function properly, you need to switch it to "1001" (modem-only mode).

  1. Next, search for device info using the vendor ID "12d1":

  1. Then check for info by the USB device number "usb 1-1":

We see the modem’s serial devices: ttyUSB0, ttyUSB1, ttyUSB2.

You’ll see something like:

You can now enter AT commands to manage and configure the modem.

  • AT^CARDLOCK? – Checks SIM lock status and the remaining attempts to enter an unlock code. (The modem’s response: CARDLOCK: A,B,0. If A=2, modem is unlocked; A=1, locked — SimLock; A=3, you either used all 10 attempts or have a customized firmware. B is the remaining number of attempts, typically 10.)

  • AT^CARDLOCK="NCK Code" – Unlock the modem to work with all mobile operators (if you have the code).

  • AT^CVOICE=? – Checks the modem’s voice support state (0 means voice is enabled).

  1. Confirm the modem supports voice functions.

  2. The modem must be in "modem-only" mode (ID 1001).

  3. If possible (and if you have a code), unlock the modem for use with any operator.

  1. In the MikoPBX web interface, go to System → Customize System Files.

  2. Open /etc/asterisk/modules.conf.

  3. Set the mode to "Append to the end of the file".

  1. Open /etc/asterisk/dongle.conf for editing.

  2. Choose "Replace Completely".

  3. Paste the following configuration:

  1. Re-open /etc/asterisk/modules.conf.

  2. Again choose "Append to the end of the file".

  3. Add contexts for SMS and USSD handling:

  1. After configuring dongle.conf, you must restart your PBX.

Each dongle requires a DID number for correct inbound call handling.

  1. Enter the Asterisk console:

  1. List the dongle devices:

  1. If the Number column is empty, run:

Restart your PBX afterwards.

  1. In the web interface, go to Call Routing → Incoming Routing.

  1. Create a new rule. In the DID field, specify the SIM’s phone number you set earlier:

  1. In Call Routing → Providers, create a new SIP account with:

    • Name – “Dongle0” (or any name)

    • Host or IP – 127.0.0.1

  1. Copy the Provider ID from the browser address bar (e.g., SIP-TRUNK-C4153448).

  1. In Call Routing → Outbound Routing, create a new rule for sending calls via the modem:

  1. Go to System → System file customization and open /etc/asterisk/extensions.conf. Choose “Add to end of file” and add:

AT^CVOICE=0 – Enables voice functions on the modem.

  • AT^U2DIAG=0 – Switch the modem into modem-only mode.

  • Add:

    Account Type – “Authentication by IP address, no password”

    dmesg | grep 12d1
    [    2.828272] usb 1-1: New USB device found, idVendor=12d1, idProduct=1001, bcdDevice= 0.00
    dmesg | grep 'usb 1-1'
    
    [    2.262750] usb 1-1: new high-speed USB device number 2 using ehci-pci
    [    2.828272] usb 1-1: New USB device found, idVendor=12d1, idProduct=1001, bcdDevice= 0.00
    [    2.828479] usb 1-1: New USB device strings: Mfr=3, Product=2, SerialNumber=0
    [    2.828641] usb 1-1: Product: HUAWEI Mobile
    [    2.828754] usb 1-1: Manufacturer: HUAWEI Technology
    [    2.856994] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
    [    2.861194] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
    [    2.864265] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2
    minicom -D /dev/ttyUSB0
    Welcome to minicom 2.8
    
    OPTIONS: I18n
    Compiled on Apr 26 2021, 18:06:16.
    Port /dev/ttyUSB0, 12:30:42
    
    Press CTRL-A Z for help on special keys
    load => chan_dongle.so
    [general]
    interval=15
    
    [defaults]
    context=public-direct-dial
    group=0
    rxgain=0
    txgain=0
    autodeletesms=yes
    resetdongle=yes
    u2diag=-1
    usecallingpres=yes
    callingpres=allowed_passed_screen
    disablesms=no
    
    language=en
    smsaspdu=yes
    mindtmfgap=45
    mindtmfduration=80
    mindtmfinterval=200
    
    callwaiting=auto
    disable=no
    initstate=start
    dtmf=relax
    
    [dongle0]
    audio=/dev/ttyUSB1
    data=/dev/ttyUSB2
    [dongle-incoming-ussd]
    exten => ussd,1,Noop(Incoming USSD: ${BASE64DECODE(${USSDBASE64})})
    exten => ussd,n,Hangup()
    
    [dongle-incoming-sms]
    exten => sms,1,Noop(Incoming SMS from ${CALLERID(num)} ${BASE64_DECODE(${SMS_BASE64})})
    exten => sms,n,Hangup()
    asterisk -r
    mikopbx*CLI> dongle show devices
    ID      Group State RSSI Model Firmware         IMEI IMSI Number
    dongle0 0     Free  12   E173  11.126.15.00.209 ***  ***  79255283744
    dongle cmd dongle0 AT+CPBS="ON"
    dongle cmd dongle0 AT+CPBW=1,"79255283744",145
    [SIP-TRUNK-C4153448-outgoing-custom]
    exten => _[0-9*#+]!,1,Set(DIAL_COMMAND=Dongle/dongle0/${number})
     same => n,return

    If these devices appear, half the work is done. If they’re missing, the modem may be in a mode other than 1001. The product ID can vary with different firmware versions.

    On some devices, modem-only mode may appear as "140c".

    Checking the Modem Settings

    Example Commands

    What to Verify?

    chan_dongle for Asterisk

    Helpful resources:

    • See the for a description of configuration and options.

    • More details in .

    • dongle0 is an arbitrary name of the line. It will be used in the Dial command for outgoing calls.

    • audio and data are the TTY device paths discovered in the previous step. You may need to swap them if there’s no audio.

    Configuring DID

    Replace dongle0 with your line’s identifier, and "79255283744" with the SIM’s phone number.

    Configuring an Inbound Route

    Configuring Outbound Routes

    Replace SIP-TRUNK-C4153448 and dongle0 with your IDs.

    "Incoming routing" section
    DID Number field
    Provider Parameters
    Provider ID
    Outbound route
    Code for the file "extensions.conf"
    dongle.conf file
    chan_dongle documentation