{{tag>[hardware apu sms]}} =====PC Engines APU - SMS Gateway===== {{:pd0b-ip5_img_1111.jpg?&300 |APU1 / GSM antenna}} {{:pd0b-ip5_img_1222.jpg?&300 |}} ====Documentation==== * PC Engines {{::apu1.pdf|APU1 system board}}. * PC Engines {{::apu1c.pdf|APU1c schematics}}. * Huawei MU609 miniPCIe {{::huawei_20mu609_20mini_20pcie_20module_20hardware_20guide-_28v200r001_02_2c_20english_29.pdf|Hardware guide}}. * Huawei MU609 miniPCIe {{:huawei_mu609_hspa_lga_module_at_command_interface_specification-_v100r002_04_english_.pdf|AT command spec.}} * Huawei MU609 miniPCIe {{::huawei_20mu609_20hspa_20lga_20module_20application_20guide-_28v100r002_02_2c_20english_29.pdf|Application guide}}. ====Suppliers==== * PC Engines APU: [[http://varia-store.com|Varia Store]] * Huawei MU609 miniPCIe: [[http://www.wmshop.cz|WM Ocean]] ====Prepare hardware==== * Upgrade BIOS with [[Upgrade PC Engine's APU BIOS with PXE|PXE]] or [[Firmware update PC Engines APU|USB]]. * Install mSATA SSD. * Install [[http://consumer.huawei.com/en/solutions/m2m-solutions/products/tech-specs/mu609mini-pcie-en.htm|Huawei MU609 miniPCIe]]. **NOTE:** Use mPCIe 2 slot, SIM wil not be recognized in slot 1. * Install [[http://varia-store.com/Accessories/Pigtails-Connector-cables/RP-SMA-SMA-Clip/Pigtail-SMA-Socket-15cm-cable::250.html|U.FL to SMA pigtail]]. * Install [[http://varia-store.com/Antennas/Antennas-900-1-9GHz/Omni-antennas-900-1-9GHz/GSM-antenna-900-1800-1900-MHz-2dBi-with-SMA-male-R-A::837.html|GSM antenna]]. ====Install and configure CentOS 6.5==== **Note: i've had a problem with the stock 2.6 kernel and installed 3.14 kernel-ml from elrepo.** * Connect via serial with screen (or minicom). screen /dev/cu.usbserial-A7022UE0 115200 * Install CentOS 6.5 x86_64, using PXE and [[CentOS 6.5 on APU - KickStart file|Kickstart]]. * Configure networking. * Load [[https://fedoraproject.org/wiki/EPEL|EPEL repository]]. * Load [[http://elrepo.org/tiki/tiki-index.php|ELRepo repository]]. * Configure hostname, mail relayhost and install k10temp module and lm_sensors: [[CentOS 6.5 on APU - post install]]. * Configure NTPd. yum install ntp # vi /etc/ntp.conf # update servers chkconfig ntpd on ntpdate ntp1.polaire.nl service ntpd start ====Configure Huawei MU609 miniPCIe==== * Install minicom. yum install minicom * Check to see if device is recognized. # dmesg |grep -i huawei usb 1-2: Product: HUAWEI Mobile usb 1-2: Manufacturer: Huawei Technologies dmesg |grep CDC cdc_ether 2-1:2.0 eth3: register 'cdc_ether' at usb-0000:00:13.2-1, CDC Ethernet Device, 00:a0:c6:41:37:70 * Determine USB tty's.# ls /dev |grep -i ttyusb ttyUSB0 ttyUSB1 ttyUSB2 ttyUSB3 ttyUSB4 * **ttyUSB0**: MODEM port: simulated using USB, for AT command interaction and establishing data connection. * **ttyUSB1**: DIAG port: simulated using USB, for DIAG (diagnostic) command interaction (mainly used to debug modules at present). * **ttyUSB2**: PCUI port: simulated using USB, for AT command interaction only. * **ttyUSB3**: GPS NMEA port: simulated using USB, sending unsolicited indications for NMEA positioning data only. * **ttyUSB4**: GPS Control port: simulated using USB, for GPS AT command interaction only. * **eth3**: ECM port: for establishing communication connection. * Connect to the gsm module. minicom -s * Go to 'Serial port setup' -> * Serial Device: **/dev/ttyUSB2** * Bps/Par/Bits: **115200 8N1** * Go back and then to 'Modem and dialing parameter setup' * Clear init string and reset string. * Select 'Save setup as dfl'. * Select 'Exit'. * Check SIM. AT+CREG? +CME ERROR: SIM PIN required * If you see **+CME ERROR: SIM failure** check if the SIM card is inserted and the module is in mPCIe 2 slot. * enter SIM PIN. AT+CPIN="1234" OK ^SIMST: 1 ^SRVST: 2 AT+CPIN? +CPIN: READY OK * Check status operator selection. In this case; 0=automatic, 0=long alfanumeric, string, 2=current. AT+COPS? +COPS: 0,0,"simyo",2 OK * Check network status. 0=report off, 1=registeredAT+CREG? +CREG: 0,1 OK * Query signal strength. [[http://m2msupport.net/m2msupport/atcsq-signal-quality/|Good signal strength]] here: -79 dBm (17 * 2 – 113).AT+CSQ +CSQ: 17,99 OK ====Install and configure SMS Server tools 3==== * Install smstools package. yum install smstools * Auto-start smsd. chkconfig smsd on * Edit **/etc/smsd.conf**. [GSM1] device = /dev/ttyUSB2 incoming = yes pin = 1234 # disable unsolicited results (like ^RSSI) init = AT^CURC=0 * View log **/var/log/smsd/**. 2014-05-30 10:27:23,2, smsd: Smsd v3.1.15 started. 2014-05-30 10:27:23,2, smsd: Running as smstools:smstools. 2014-05-30 10:27:23,7, smsd: Running startup_check (shell): /var/spool/sms/incoming/smsd_script.a7tj8n /tmp/smsd_data.4OfwfP 2014-05-30 10:27:23,7, smsd: Done: startup_check (shell), execution time 0 sec., status: 0 (0) 2014-05-30 10:27:23,4, smsd: File mode creation mask: 022 (0644, rw-r--r--). 2014-05-30 10:27:23,5, smsd: Outgoing file checker has started. PID: 1273. 2014-05-30 10:27:23,7, smsd: All PID's: 1273,1274 2014-05-30 10:27:23,5, GSM1: Modem handler 0 has started. PID: 1274. 2014-05-30 10:27:23,5, GSM1: Using check_memory_method 1: CPMS is used. 2014-05-30 10:27:23,6, GSM1: Checking device for incoming SMS 2014-05-30 10:27:23,6, GSM1: Checking if modem is ready 2014-05-30 10:27:23,7, GSM1: -> AT 2014-05-30 10:27:23,7, GSM1: Command is sent, waiting for the answer 2014-05-30 10:27:23,7, GSM1: <- AT OK 2014-05-30 10:27:23,6, GSM1: Pre-initializing modem 2014-05-30 10:27:24,7, GSM1: -> ATE0+CMEE=1;+CREG=2 2014-05-30 10:27:24,7, GSM1: Command is sent, waiting for the answer 2014-05-30 10:27:24,7, GSM1: <- ATE0+CMEE=1;+CREG=2 OK 2014-05-30 10:27:24,6, GSM1: Checking if modem needs PIN 2014-05-30 10:27:24,7, GSM1: -> AT+CPIN? 2014-05-30 10:27:24,7, GSM1: Command is sent, waiting for the answer 2014-05-30 10:27:24,7, GSM1: <- +CPIN: READY OK 2014-05-30 10:27:25,7, GSM1: -> AT+CSQ ... * Send test SMS * switch so smstools user. su - smstools * Create a script:#!/bin/bash OUT=$(mktemp /var/spool/sms/outgoing/sms.XXXXXXXXXX) || { echo "Failed to create temp file"; exit 1; } echo -n "To: 31612345678\n\nHello, this is the sms." >> $OUT * chmod +x yourscript, and run it... The smsd.log will show: 2014-05-30 10:44:55,6, GSM1: I have to send 1 short message for /var/spool/sms/checked/sms.XNBpdjgPIL 2014-05-30 10:44:55,6, GSM1: Sending SMS from to 31612345678 2014-05-30 10:44:55,6, GSM1: Checking if modem is ready ... * {{:sms.jpg?nolink&300|}} * Reduce logging, edit **/etc/smsd.conf** and reload.loglevel = 5 service smsd restart * Received SMS's wil be placed in **/var/spool/sms/incoming**. ====Example: execute script upon receiving SMS==== If you want the APU speaker to beep, see: [[PC Engines APU - speaker CentOS 6.5]] And if you want other users than root to use beep, set the setuid bit. chmod 4755 /usr/bin/beep * Create **/usr/local/bin/smsevent** #!/bin/sh if [ "$1" == "RECEIVED" ]; then beep -f700 -l100 -d100 -r3 -n -f1 -l300 -n -f700 -l300 -r2 -n -f1 -l300 -n -f700 -l100 -d100 -r3 fi * chmod +x /usr/local/bin/smsevent * Edit **/etc/smsd.conf**. eventhandler = /usr/local/bin/smsevent * Restart smsd. service smsd restart ====AT Commands==== ^ AT Command ^ Description ^ | AT+CPIN="1234" | Enter PIN | | AT+CPIN? | Request PIN info | | AT+COPS? | Check status operator selection | | AT+CREG? | Check network status | | AT+CSQ | Query signal strength | | ATI | Information, manufacturer, product, version, etc.. | | AT+GMI | Manufacturer | | AT+GMM | Product model | | AT+GMR | Software version | | AT+GSN | ESN/IMEI | | AT+GCAP | Capability list | | AT+CCLK="2014/05/30,16:12:30" | Set time/date | | AT+CCLK? | Read clock |