Tags
We are currently working on a project to implement DMVPN (IWAN) over BGAN. This is the process I went through to discover how to send AT commands from our Cisco IOS Router to the BGAN unit.
Router Configuration
vrf definition INMARSAT rd 1:1 ! address-family ipv4 exit-address-family ! interface GigabitEthernet0 vrf forwarding INMARSAT ip address dhcp !
Telnet to the BGAN Unit.
LAB-819# telnet 192.168.128.100 /vrf INMARSAT Trying 192.168.128.100 ... Open VxWorks login: bganuser Password: broadband
Getting Help in VxWorks
When interacting with VxWorks, you can type help to get the main help menu. Note that the help menu is broken up into additional subHelp menus providing topics on specific types of tasks.
-> help
help Print this list
dbgHelp Print debugger help info
edrHelp Print ED&R help info
ioHelp Print I/O utilities help info
nfsHelp Print nfs help info
netHelp Print network help info
rtpHelp Print process help info
spyHelp Print task histogrammer help info
timexHelp Print execution timer help info
h [n] Print (or set) shell history
i [task] Summary of tasks' TCBs
ti task Complete info on TCB for task
sp adr,args... Spawn a task, pri=100, opt=0x19, stk=20000
taskSpawn name,pri,opt,stk,adr,args... Spawn a task
td task Delete a task
ts task Suspend a task
tr task Resume a task
tw task Print pending task detailed info
w [task] Print pending task info
d [adr[,nunits[,width]]] Display memory
m adr[,width] Modify memory
mRegs [reg[,task]] Modify a task's registers interactively
pc [task] Return task's program counter
iam "user"[,"passwd"] Set user name and passwd
whoami Print user name
devs List devices
ld [syms[,noAbort][,"name"]] Load stdin, or file, into memory
(syms = add symbols to table:
-1 = none, 0 = globals, 1 = all)
lkup ["substr"] List symbols in system symbol table
lkAddr address List symbol table entries near address
checkStack [task] List task stack sizes and usage
printErrno value Print the name of a status value
period secs,adr,args... Spawn task to call function periodically
repeat n,adr,args... Spawn task to call function n times (0=forever)
version Print VxWorks version info, and boot line
shConfig ["config"] Display or set shell configuration variables
strFree [address] Free strings allocated within the shell (-1=all)
NOTE: Arguments specifying 'task' can be either task ID or name.
value = 1 = 0x1
Execute the netHelp command to retrieve syntax for network related commands.
-> netHelp
hostAdd "hostname","inetaddr" - add a host to remote host table;
"inetaddr" must be in standard
Internet address format e.g. "90.0.0.4"
hostShow - print current remote host table
netDevCreate "devname","hostname",protocol
- create an I/O device to access files
on the specified host
(protocol 0=rsh, 1=ftp)
routeAdd "destaddr","gateaddr" - add route to route table
routeDelete "destaddr","gateaddr" - delete route from route table
routeShow - print current route table
iam "usr"[,"passwd"] - specify the user name by which you
will be known to remote hosts
(and optional password)
whoami - print the current remote ID
rlogin "host" - log in to a remote host;
"host" can be inet address or
host name in remote host table
ifShow ["ifname"] - show info about network interfaces
inetstatShow - show all Internet protocol sockets
tcpstatShow - show statistics for TCP
udpstatShow - show statistics for UDP
ipstatShow - show statistics for IP
icmpstatShow - show statistics for ICMP
arptabShow - show a list of known ARP entries
mbufShow - show mbuf statistics
EXAMPLE: -> hostAdd "wrs", "90.0.0.2"
-> netDevCreate "wrs:", "wrs", 0
-> iam "fred"
-> copy rlogin "wrs" /* rlogin to host "wrs" */
value = 1 = 0x1
ipstatShow
ipstatShow is similar to netstat in linux or unix systems and provides a listing of running services which are listening for connections to the system as well as current sockets in use.
-> inetstatShow Active Internet connections (including servers) PCB Proto Recv-Q Send-Q Local Address Foreign Address (state) -------- ----- ------ ------ --------------------- --------------------- ------- a0c41920 TCP 0 0 192.168.128.100.23 192.168.128.102.23048 ESTABLISHED a0c406c0 TCP 0 0 0.0.0.0.1829 0.0.0.0.0 LISTEN a0c3fee0 TCP 0 0 0.0.0.0.1828 0.0.0.0.0 LISTEN a0c3f9a0 TCP 0 0 0.0.0.0.80 0.0.0.0.0 LISTEN a0c3f460 TCP 0 0 0.0.0.0.1825 0.0.0.0.0 LISTEN a0c3ef20 TCP 0 0 0.0.0.0.1827 0.0.0.0.0 LISTEN a0c3e200 TCP 0 0 0.0.0.0.21 0.0.0.0.0 LISTEN a0c3dcc0 TCP 0 0 0.0.0.0.23 0.0.0.0.0 LISTEN a0c36080 UDP 0 0 0.0.0.0.1025 0.0.0.0.0 a0c35cc0 UDP 0 0 0.0.0.0.67 0.0.0.0.0 a0c35b80 UDP 0 0 127.0.0.1.1024 127.0.0.1.17185 a0c357c0 UDP 0 0 0.0.0.0.17185 0.0.0.0.0 value = 1 = 0x1 ->exit
Note the results of the table above:
- Our current active Telnet Session.
- Unknown (non-registered) TCP Ports … these are what we will be looking into.
- HTTP Daemon providing local management of UT (User Terminal aka BGAN IDU/ODU).
- FTP Daemon providing access to local filesystem.
- Unknown (non-registered) UDP Ports.
- BOOTP/DCHP Daemon providing Address Assignment on the LAN.
Identifying Services on Unknown TCP Ports
So now that we have identified the listening TCP and UDP sockets in the unit, lets try and identify what each TCP port is used for.
LAB-819# telnet 192.168.128.100 1825 /vrf INMARSAT Trying 192.168.128.100, 1825 ... Open Accepted connection from client 192.168.128.102 on port 48648. [ UMTSMB] LVL:CRITICAL TIM:6544835 umtsmendScanAcaAlwaysOnEntries: ACA ALWAYS ON context(1) is NOT active. [ UMTSMB] LVL:CRITICAL TIM:6544835 ACA SCAN PDP Reactivation Request: CID [1] [ psCtrl] LVL:CRITICAL TIM:6545284 umop_handle_pdp_activate_rej: rab_id [1], c_id [1] [ psCtrl] LVL:CRITICAL TIM:6545284 umop_handle_pdp_activate_rej: pclSMCauseValueIE = 0x1d ...response shortened for brevity... <Press ctrl-shift-6 x keys> LAB-819# disconnect Closing connection to 192.168.128.100 [confirm]<Press enter key> LAB-819#
It appears that Port 1825 is being utilized as a monitor or logging port. Lets try 1827.
LAB-819# telnet 192.168.128.100 1827 /vrf INMARSAT Trying 192.168.128.100, 1827 ... Open AT ATD EHLO HELO HELP help <Press ctrl-shift-6 x keys>
Well we’ll have to dig back into that one later.. lets take a look at 1828
LAB-819# telnet 192.168.128.100 1828 /vrf INMARSAT Trying 192.168.128.100, 1828 ... Open AT ATD EHLO HELO HELP help <Press ctrl-shift-6 x keys>
Again.. no response.. lets try 1829.
LAB-819# telnet 192.168.128.100 1829 /vrf INMARSAT DMVPN-LAB-SITE#telnet 192.168.128.100 1829 /vrf INM:OKE Trying 192.168.128.100, 1829 ... Open <enter> ERROR <enter> ERROR AT OK
Bingo… no this is looking promising. Lets now reference the Hughes AT Command Reference and see what we can’t accomplish.
AT OK AT_ILOG ERROR AT ?? ERROR
I spent quite some time in here trying to figure out why I couldn’t get any response but ERROR. After reading through some of the command reference I noticed a section on the AT_ICLCK: Facility Lock Configure which allows you lock, unlock, or interrogate a MT (Mobile Terminal) facility. By providing “AD” for Administrator Lock, 0 to Unlock and “admin” for the password the AT interface becomes available for interrogation. (admin is the default password and may need to be enabled in the Security Section of the Web GUI prior to issuing this command to continue.)
AT OK AT_ICLCK="AD",0,"admin" OK AT ?? Type "AT ??" to get a detailed description of the Help commands AT ?? List supported AT commands ITU-T V.25ter: DTE-DCE Interface Commands AT S Set register AT E Command echo ITU-T V.25ter: Call Control Commands AT D Dial AT H Hook control ETSI GSM 07.07: General Commands AT +CGMI Request Manufacturer Identification AT +CGMM Request Model Identification AT +CGMN Request Manufacturer Name AT +CGMP Request Manufacturer Part Number AT +CGMR Request Revision Identification AT +CGMS Request Manufacturer Serial Number AT +CGSN Request Product Serial Number Identification AT +CSCS Select TE Character Set AT +CIMI Request International Mobile Subscriber Identity (IMSI) AT +CCLK Time of Day (UTC), as known to the terminal AT +CNUM Subscriber Number AT +CREG Network Registration AT +COPS Operator Selection AT +CPOL Preferred PLMN List AT +CPLS Preferred PLMN List AT +CLCK Facility Lock AT +CPWD Change Password AT +CCUG Closed User Group AT +CLCC List Current Calls AT +CUSD Unstructured Supplementary Service Data AT +CPAS Phone Activity Status AT +CFUN Set Phone Functionality AT +CPIN Enter PIN AT +CBC Battery Charge AT +CIND Indicator AT +CPBS Select Phonebook Memory Storage AT +CPBR Read Phonebook Entries AT +CPBW Write/Delete Phonebook Entry AT +CRSM Restricted SIM Access AT +CMAR Master Reset AT +CMEE Report Mobile Equipment Error ETSI GSM 07.05: General Configuration Commands AT +CSMS Select Message Service AT +CPMS Preferred Message Storage AT +CMGF Message Format ETSI GSM 07.05: Message Configuration Commands AT +CSCA Service Center Address AT +CSMP Set Text Mode Parameters AT +CSDH Show Text Mode Parameters AT +CSCB Select Cell Broadcast Message Types AT +CSAS Save Settings AT +CRES Restore Settings ETSI GSM 07.05: Message Receiving and Reading Commands AT +CNMI New Message Indications to TE AT +CMGL List Messages AT +CMGR Read Message ETSI GSM 07.05: Message Sending and Writing Commands AT +CMGS Send Message AT +CMSS Send Message from Storage AT +CMGW Write Message to Memory AT +CMGD Delete Message AT +CGDCONT Define PDP Context AT +CGDSCONT Define Secondary PDP Context AT +CGEQREQ 3G Quality of Service Profile (Requested) AT +CGQREQ Quality of Service Profile (Requested) AT +CGQMIN Quality of Service Profile (Minimum Acceptable) AT +CGEQMIN 3G Quality of Service Profile (Minimum Acceptable) AT +CGEQNEG 3G Quality of Service Profile (Negotiated) AT +CGATT Attach or Detach AT +CGACT PDP Context Activate or Deactivate AT +CGCMOD PDP Context Modify AT +CGTFT Traffic Flow Template AT +CGDATA Data Mode AT +CGPADDR Show PDP Address AT +CGCLASS GPRS Mobile Station Class AT +CGREG GPRS Network Registration Indication AT +CGSMS Select Service for MO SMS Messages Inmarsat Specific AT Commands AT _IPOINT Antenna Pointing AT _IGPS GPS Location Information AT _INIS Network Interface Status AT _ITFT Uplink Traffic Flow Template AT _ITEMP BGAN Terminal Temperature AT _ILOG Retrieve Log File AT _ISLEEP MT Sleep Status Indicator AT _IMETER Call Metering AT _ISIG Signal Strength Indicator AT _IBALARM Alarm Indicator AT _ISATINFO BGAN Satellite Information AT _ISATVIS BGAN Satellite(s) Visible AT _ISATCUR BGAN Current Satellite AT _IBNOTIFY Control Unsolicited Commands AT _IERROR BGAN Terminal Error Reports AT _IGETFW Get firmware file from FTP server AT _IUPDFW Trigger firmware update. AT _ISENDFILESend file from UT to FTP server AT _IGETFILE Download file from FTP server to UT AT _IUPDCFG Install new 'config.txt' file. AT _IREMWEB Control HTTP access to UT. AT _ICLCK Facility Lock Configure AT _ICPWD Change Facility Password AT _IMACLOC Enable/Disable Ethernet MAC filtering. AT _IMACLOCADConfigure allowed Ethernet MAC addresses. AT _IPWSAVSCHThis command is used to input criteria for power save mode. AT _ISMSRMT Enable/Disable remote SMS commands. AT _IATCSCN Inititate RX ATC Scan AT _IATCROBSTEnable / Disable ATC robustness mode HNS Specific AT Commands AT _IHINIT Initial Configuration Settings AT _IHIP Internet Protocol Settings AT _IHSTATUS HNS Terminal Status AT _IHSET HNS Set Terminal Configuration AT _IHREAD HNS Terminal Version Information AT _IHDEFCNT Define a Default PDP Context AT _IHACA Automatic Context Activation AT _IHTM Set CM to Test Mode AT _IHTXCW Transmit CW AT _IHSTXCW Stop CW Transmission AT _IHTXMOD Transmit Modulated Signal AT _IHSTXMOD Stop Modulated Signal Transmission AT _IHGFACQ Ask PSAB Acquisition Status AT _IHSIGACQ Ask Signal Acquisition Status AT _IHGF Obtain Satellite Information for Antenna Pointing AT _IHGPS Initiate or Update GPS Information to CM AT _IHPWROFF CM Accomplishes Deregistration Procedure AT _IHREBOOT Reboot Terminal AT _IHCCAL Send Cable Calibration Data to CM AT _IHSWUPG SW Upgrade Indication AT _IHSWDATA Request a block of image file. AT _IHLOG Write String to Console and Syslog AT _IHPIN Query PIN/PUK Status AT _IHPACKET Report PS Call Log Information AT _IHSMS Report Short Message Delivery Status AT _IHBEAM Report Beam ID in which UT is Operating AT _IHTIMER Set Timeouts for Connections and Leases AT _IHARP Terminal ARP Entries AT _IHPING Terminal-initiated PING. AT _IHTEXT Terminal Text Message AT _IHPBIT Command UT to Perform Platform Built-In Test and Check Status AT _IHEVENT BGAN Terminal Event Reports AT _IHCIRCUITBGAN Terminal CS Call Reports AT _IHTEMP HNS Terminal Temperature AT _IHMETER Expanded Call Metering Summary of Inmarsat Specific Result Codes OK AT_ILOG? _ILOG: "syslog" OK AT_ILOG="syslog" _ILOG: [ UMTSMB] LVL:CRITICAL TIM:1228835 ACA SCAN PDP Reactivation Request: CID [1] _ILOG: [ psCtrl] LVL:CRITICAL TIM:1229268 umop_handle_pdp_activate_rej: rab_id [1], c_id [1] _ILOG: [ psCtrl] LVL:CRITICAL TIM:1229268 umop_handle_pdp_activate_rej: pclSMCauseValueIE = 0x1d _ILOG: [ UMTSMB] LVL:CRITICAL TIM:1231835 umtsmendScanAcaAlwaysOnEntries: ACA ALWAYS ON context(1) is NOT active. _ILOG: [ UMTSMB] LVL:CRITICAL TIM:1231835 ACA SCAN PDP Reactivation Request: CID [1] _ILOG: [ psCtrl] LVL:CRITICAL TIM:1232268 umop_handle_pdp_activate_rej: rab_id [2], c_id [1] _ILOG: [ psCtrl] LVL:CRITICAL TIM:1232268 umop_handle_pdp_activate_rej: pclSMCauseValueIE = 0x1d _ILOG: [ UMTSMB] LVL:CRITICAL TIM:1234835 umtsmendScanAcaAlwaysOnEntries: ACA ALWAYS ON context(1) is NOT active. _ILOG: [ UMTSMB] LVL:CRITICAL TIM:1234835 ACA SCAN PDP Reactivation Request: CID [1] ...response shortened for brevity... _ILOG: [ UMTSMB] LVL:CRITICAL TIM:1225835 ACA SCAN PDP Reactivation Request: CID [1] _ILOG: [ psCtrl] LVL:CRITICAL TIM:1226284 umop_handle_pdp_activate_rej: rab_id [0], c_id [1] _ILOG: [ psCtrl] LVL:CRITICAL TIM:1226284 umop_handle_pdp_activate_rej: pclSMCauseValueIE = 0x1d OK AT_IHSTATUS OK AT_IHSTATUS=? _IHSTATUS: ("CIPH", "CONN", "TRAF", "FLTS", "MAC", "GPS", "WLAN", "CSC", "CLASS") OK AT_IHSTATUS="GPS" _IHSTATUS: "GPS", 37.15058,-94.99178,3D,allowed,16/01/26,20:26:37 OK AT_IHSTATUS="CONN" _IHSTATUS: "CONN", PS Attached / CS Attached OK AT+CGPADDR=? +CGPADDR: (1) OK AT+CGPADDR=1 +CGPADDR: 1,"0.0.0.0" OK AT+CGPADDR? +CGPADDR: 1,"0.0.0.0" OK AT_ICLCK="AD",1,"admin" OK
Note the interface does not auto-lock after you terminate the TCP session, so you must enter the last command (AT_ICLCK=”AD”,1,”admin”) to lock the MT AT interface so any untrusted connections to this port will be required to know the password to unlock the interface and issue AT commands.
So thats about how far I’ve gotten thus far.. My next steps will be to write a TCL script around this to allow the router to make decisions based on the state in the BGAN UT and to control the UT. Check back for further updates!
Timely post – I am thankful for the specifics . Does someone know if I can grab a blank DA 7625-1 example to work with ?
What model are you using?
Hi C. M. Stephan
Your test helps me a lot to use the 9052. Some of the commands don’t work for my model. Ex. “AT_IHREBOOT”, although the telent reply me “OK”, but the Hughes 9502 still keep working. Do you have any idea about this situation?