SMS SMPP Troubleshooting
SMPP Protocol is binary encoded for efficiency. It is not text based as SIP protocol so packet capture with tethereal to .pcap file will not show human-readable information.
Must-read before proceeding:
- https://en.wikipedia.org/wiki/Short_Message_Peer-to-Peer
- Protocol specification: https://www.openmarket.com/customer-center/documentation/SMSSMPP-Specification/SMPP-v3-4-Issue1-2.pdf
pcap file capture
In order to debug SMPP issues, sometime pcap file capture is needed. This can be achieved using Wireshark program, as described here How to capture packets using wireshark. To capture only SMPP traffic it is best to capture traffic coming only to/from SMPP provider IP. So if provider's IP is 1.2.3.4, capture command would be the following:
tethereal -i eth0 -w /home/smpp_capture.pcap host 1.2.3.4
pcap file view over Wireshark
Once we have captured SMPP trace into pcap file, we can download this file and view it over Wireshark program. SMPP is a binary (as opposed to SIP protocol, which is text based) protocol, so to see text we need correctly decode pcap file. Often Wireshark recognise SMPP messages as RSL format and show "malformed" text messages
To decode such messages as SMPP, right click on such message, in context menu select 'Decode As' and choose SMPP protocol. Trace will looks like this:
Manually sending SMS from command line
It is possible to send SMS directly from command line and check debug output.
/usr/local/mor/smppcli -u username -p password -n dest_number -d smpp_provider_ip:port -m message -s source_number -e ucs2 -t transmitter
If we have something else but not [ESME_ROK], then check error code from this file for the cause: File:Smpp error codes.pdf
It is also possible to check what exactly parametres MOR used for sending SMS in /home/mor/log/gui_debug.log file(check for text starting with 'SMPP SMS SENDING' message)