ติดตั้ง chan_dongle เพื่อทำให้ USB 3G Modem (Huawei) เป็น GSM VoIP Gateway
** ใช้ DC Power Supply ขนาด 1.2A ขึ้นไป **
** ติดตั้ง USB 2G/3G/4G Modem ได้มากกว่า 1 อุปกรณ์ **
** ใช้ USB Hub ขยายพอร์ต USB ได้ แต่อาจจ่ายกระแสได้ไม่มากพอหากมี USB หลายตัว **
1. รันคำสั่งนี้เพื่อติดตั้ง
- โค้ด: เลือกทั้งหมด
install-dongle
ข้อความขณะติดตั้ง
Installing GSM VoIP gateway with chan_dongle.
Please read the documentation at http://raspbx.org/dongle
Please enter the phone number of your SIM card
(defaults to +1234567890 if left blank): 0812345678 <- ไว้นว่างไว้ก็ได้ ซึ่งค่าดีฟอลท์คือ +1234567890 ต้องใส่ในช่อง DID Number ของ Inbound Routes (ถ้าต้องการให้โทรเข้าได้ด้วย)
Send incoming SMS to email address
(leave empty to disable SMS forwarding): iamaladin@gmail.com
Forward incoming SMS to mobile phone number (via dongle0)
(leave empty to disable):
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libjim0debian2 usb-modeswitch-data
Suggested packages:
comgt wvdial
The following NEW packages will be installed:
asterisk11-chandongle libjim0debian2 usb-modeswitch usb-modeswitch-data
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 441 kB of archives.
After this operation, 1,208 kB of additional disk space will be used.
Get:1 http://repo.raspbx.org/apt/debian/ wheezy/main asterisk11-chandongle all 1.1-34 [238 kB]
Get:2 http://archive.raspbian.org/raspbian/ wheezy/main libjim0debian2 armhf 0.73-3 [118 kB]
Get:3 http://archive.raspbian.org/raspbian/ wheezy/main usb-modeswitch-data all 20120815-2 [33.2 kB]
Get:4 http://archive.raspbian.org/raspbian/ wheezy/main usb-modeswitch armhf 1.2.3+repack0-1 [51.0 kB]
Fetched 441 kB in 4s (95.7 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libjim0debian2:armhf.
(Reading database ... 38071 files and directories currently installed.)
Unpacking libjim0debian2:armhf (from .../libjim0debian2_0.73-3_armhf.deb) ...
Selecting previously unselected package usb-modeswitch-data.
Unpacking usb-modeswitch-data (from .../usb-modeswitch-data_20120815-2_all.deb) ...
Selecting previously unselected package usb-modeswitch.
Unpacking usb-modeswitch (from .../usb-modeswitch_1.2.3+repack0-1_armhf.deb) ...
Selecting previously unselected package asterisk11-chandongle.
Unpacking asterisk11-chandongle (from .../asterisk11-chandongle_1.1-34_all.deb) ...
Processing triggers for man-db ...
Setting up libjim0debian2:armhf (0.73-3) ...
Setting up usb-modeswitch-data (20120815-2) ...
Setting up usb-modeswitch (1.2.3+repack0-1) ...
Setting up asterisk11-chandongle (1.1-34) ...
Saving previous contents of /etc/asterisk/extensions_custom.conf to /etc/asterisk/extensions_custom.conf.orig
Storing received SMS in /var/log/asterisk/sms.txt
Would you like to install a webpage for sending SMS with
chan_dongle? (http://raspbx/sms/) [y/N] y
Enter password for SMS page: raspberry
Please wait...
STOPPING ASTERISK
Waiting for Asterisk to Stop Gracefully...
Asterisk Stopped
SETTING FILE PERMISSIONS
Permissions OK
Removing any dangling symlinks
Dangling symlinks removed
STARTING ASTERISK
Asterisk Started
Your configuration has been saved successfully to these files:
/etc/asterisk/dongle.conf
เช็คว่า RasPBX มองเห็น 3G USB หรือไม่
- โค้ด: เลือกทั้งหมด
ls -la /dev/ttyUSB*
ผลลัพธ์
- โค้ด: เลือกทั้งหมด
crw-rw-rw- 1 root dialout 188, 0 Dec 7 23:04 /dev/ttyUSB0
crw-rw-rw- 1 root dialout 188, 1 Dec 7 23:04 /dev/ttyUSB1
crw-rw-rw- 1 root dialout 188, 2 Dec 7 23:10 /dev/ttyUSB2
crw-rw-rw- 1 root dialout 188, 3 Dec 7 23:04 /dev/ttyUSB3
crw-rw-rw- 1 root dialout 188, 4 Dec 7 23:04 /dev/ttyUSB4
crw-rw-rw- 1 root dialout 188, 5 Dec 7 23:04 /dev/ttyUSB5
ตัวอย่างข้างบนผมใส่ USB Modem เข้าไป 2 ตัว โดยที่ 3G USB ยี่ห้อ Huawei (ยี่ห้อ iFOX ก็คือ Huawei) 1 ตัวจะมี 3 USB คือ ttyUSB0, ttyUSB1, ttyUSB2
จะรู้ได้อย่างไรว่า 3G USB ใช้ USB หมายเลขอะไร
รันคำสั่ง dmesg
หาข้อความประมาณนี้
- โค้ด: เลือกทั้งหมด
[ 92.596186] usbserial: USB Serial support registered for GSM modem (1-port)
[ 92.819049] option 1-1.5:1.0: GSM modem (1-port) converter detected
[ 92.932459] usb 1-1.5: GSM modem (1-port) converter now attached to ttyUSB0
[ 93.116409] option 1-1.5:1.2: GSM modem (1-port) converter detected
[ 93.264657] usb 1-1.5: GSM modem (1-port) converter now attached to ttyUSB1
[ 93.464239] option 1-1.5:1.3: GSM modem (1-port) converter detected
[ 93.599634] usb 1-1.5: GSM modem (1-port) converter now attached to ttyUSB2
ถ้าเป็น USB Dongle ยี่ห้อ Huawei จะมองเห็นเป็น ttyUSB0, ttyUSB1 และ ttyUSB2 สำหรับ data, voice (audio) และ cd-rom ตามลำดับ
2. คอนฟิกไฟล์ /etc/asterisk/dongle.conf
เช็คดูว่ามีบรรทัดเหล่านี้ ปกติจะมีอยู่เพราะไฟล์สคริปต์ติดตั้งจะใส่ไว้ให้
- โค้ด: เลือกทั้งหมด
[dongle0]
audio=/dev/ttyUSB1
data=/dev/ttyUSB2
ถ้าเปลี่ยนช่อง USB อาจทำให้หมายเลขเปลี่ยน ต้องมาแก้คอนฟิกในไฟล์นี้ด้วย ดูว่าใช้ ttyUSB อะไรด้วยคำสั่ง dmesg
3. รีโหลด
- โค้ด: เลือกทั้งหมด
asterisk -rx "module reload chan_dongle.so"
3. คำสั่งบน Asterisk Console
คำสั่งขึ้นต้นด้วย dongle
- โค้ด: เลือกทั้งหมด
raspbx*CLI> dongle
callwaiting cmd discovery pdu reload remove reset restart show sms start stop ussd
เช่น
- โค้ด: เลือกทั้งหมด
raspbx*CLI> dongle show devices
ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number
dongle0 0 GSM not re 22 5 4 NONE E1553 11.608.12.00.00 354112033045290 520032101820639 Unknown
raspbx*CLI> dongle ussd dongle0 *121#
[dongle0] Device not connected / initialized / registered
2. ติดตั้งเว็บสำหรับรับส่ง USSD
- โค้ด: เลือกทั้งหมด
apt-get install ussd-webpage
หน้าเว็บ http://x.x.x.x/ussd
3. เสียบ USB 3G Modem เข้าช่อง USB หรือถ้าเสียบอยู่แล้วให้ดึงออกแล้วเสียบใหม่
เข้าหน้า FreePBX -> Connectivities -> Truks เลือก Add custom trunk
บรรทัด Custom Dial ใส่ dongle/dongle0/$OUTNUM$
ต่อไปสร้าง Outbound Routes และเลือก Trunk นี้โทรออก
4. การรับสายเข้า
คอนฟิก Inbound Routes แล้วเลือก Destination
เบอร์ DID ดีฟอลท์คือ +1234567890 ตามที่ตั้งไว้ตอนรันสคริปต์ติดตั้ง ถ้าจำไม่ได้ให้ดูจากบรรทัด exten= ในไฟล์ /etc/asterisk/dongle.conf
5. การรับและส่ง SMS
ตอนรับ SMS สามารถส่งเข้า Email ได้ (มีให้คอนฟิกอีเมล์ตอนติดตั้งสคริปต์) ถ้าไม่เซ็ตอีเมล์ จะเก็บข้อความไว้ในไฟล์ /var/log/asterisk/sms.txt
สามารถรับข้อความจาก email แล้วส่ง sms ไปยังโทรศัพท์มือถือได้
เว็บเพจสำหรับส่ง sms
http://x.x.x.x/sms
เช็คฮาร์ดแวร์
dmesg
แก้ปัญหา USB Dongle ไม่ทำงาน
มักเกิดจากใน OS ไม่มี /dev/ttyUSB
ข้อความที่ฟ้องใน Asterisk
[2014-12-07 00:03:40] WARNING[3164]: chan_dongle.c:218 opentty: unable to open /dev/ttyUSB2: No such file or directory
ตรวจสอบว่าใน /dev มี ttyUSB* หรือไม่
ls -la /dev/ttyUSB*
ปรากกว่าไม่มี
ls: cannot access /dev/ttyUSB*: No such file or directory
วิธีแก้ปัญหา
cp /boot/cmdline.txt /boot/cmdline_backup.txt
nano /boot/cmdline.txt
ข้อมูลในไฟล์
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
ให้ลบข้อความนี้ออก
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1
ให้เหลือแค่
root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
บันทึกไฟล์
reboot เครื่อง
เมื่อเสียบอุปกรณ์ USB ใน /dev จะแสดง ttyUSB* ขึ้นมาเอง