For the past two years, I have spent a lot effort to design software for Cisco IR829. It has been released into market and well received by the market. One of very interesting deployment case is to deploy IR829 as entertainment system for mass transportation vehicle like bus, train, even airplane.

Cisco IR829

How it works: Packet Flow

IR829 has WiFi AP, runs IOS, and also has a Guest Linux. In addition, IR829 provides an external USB interface, which can connect USB storage device. WiFi AP can provide WiFi connection to the user’s smart phone, tablet, IOS can perform routing, and Guest Linux can host a server to provide video service. The external USB interface can be used to plug a USB stick, which can store video files like mp4 files.

The following picture shows the packet flow in high level.

Cisco IR829 MGW

  1. The web server deployed in Guest Linux (GOS) fetchs the video from USB memory stick
  2. GOS sends packet IOS.
  3. IOS routes the packet to WiFi AP module.
  4. WiFi AP module transmits the packet to smart phone.
  5. Smart phone receives the ppacket, play video.

sample configuration to make packet flow

IOS

  • IOS is configured to connect to GOS through interface GigabitEthernet5 (2.2.2.1).
  • IOS is configured to connect to WiFi AP module through interface Wlan-GigabitEthernet0.
  • IOS acts as DHCP server for WiFi AP to provide IP address 192.168.146.[2-244] for WiFi client (e.g. smart phone)
  • IOS provides DNS service, playbus.cisco.com=2.2.2.2
IR829-mediaGW#show running-config 
Building configuration...

  
Current configuration : 3541 bytes
!
version 15.6
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
service internal
!
hostname IR829-mediaGW
!
boot-start-marker
boot system flash ir800-uk9.video1
boot-end-marker
!
!
enable password cisco
!
no aaa new-model
ethernet lmi ce
service-module wlan-ap 0 bootimage autonomous
!
ignition off-timer 900
!         
ignition undervoltage threshold 9
!         
no ignition enable
!         
!         
!         
ip dhcp excluded-address 192.168.146.1
!         
ip dhcp pool wls-guest
 network 192.168.146.0 255.255.255.0
 default-router 192.168.146.1 
 domain-name cisco.com
 dns-server 192.168.146.1 8.8.8.8 
 lease 0 0 30
   remember
!         
!         
!         
ip host playbus.cisco.com 2.2.2.2
ip cef    
no ipv6 cef
multilink bundle-name authenticated
!         
!         
chat-script lte "" "AT!CALL" TIMEOUT 20 "OK"
!         
!         
license udi pid IR829GW-LTE-NA-AK9 sn FGL192423UV
!         
!         
!         
redundancy
 notification-timer 120000
!         
!         
controller Cellular 0
 lte sim data-profile 1 attach-profile 1 slot 0
 lte sim data-profile 1 attach-profile 1 slot 1
 lte modem link-recovery rssi onset-threshold -110
 lte modem link-recovery monitor-timer 20
 lte modem link-recovery wait-timer 10
 lte modem link-recovery debounce-count 6
!         
!         
!         
!         
!         
interface GigabitEthernet0
 ip address 33.33.33.96 255.255.255.0
 shutdown 
!         
interface GigabitEthernet1
 switchport access vlan 10
 no ip address
!         
interface GigabitEthernet2
 switchport access vlan 10
 no ip address
!         
interface GigabitEthernet3
 switchport access vlan 10
 no ip address
!         
interface GigabitEthernet4
 switchport access vlan 10
 no ip address
!         
interface Wlan-GigabitEthernet0
 switchport trunk native vlan 10
 switchport mode trunk
 no ip address
 storm-control broadcast level 30.00 20.00
 storm-control action shutdown
!         
interface GigabitEthernet5
 ip address 2.2.2.1 255.255.255.0
 ip nat inside
 ip virtual-reassembly in
 duplex auto
 speed auto
!         
interface Cellular0
 ip address negotiated
 encapsulation slip
 load-interval 30
 dialer in-band
 dialer idle-timeout 0
 dialer string lte
 dialer-group 1
 no peer default ip address
 async mode interactive
 routing dynamic
!         
interface Cellular1
 no ip address
 encapsulation slip
!         
interface wlan-ap0
 ip address 1.1.1.1 255.255.255.255
!         
interface Vlan1
 ip address 33.33.33.95 255.255.255.0
!         
interface Vlan10
 ip address 192.168.146.1 255.255.255.0
 ip nat inside
 ip virtual-reassembly in
!         
interface Async0
 no ip address
 encapsulation scada
!         
ip forward-protocol nd
!         
no ip http server
no ip http secure-server
!         
ip dns server
ip route 0.0.0.0 0.0.0.0 Cellular0
ip route 2.2.2.0 255.255.255.0 GigabitEthernet5
ip route 192.168.1.0 255.255.255.0 GigabitEthernet5
!         
dialer-list 1 protocol ip permit
!         
!         
!         
control-plane
!         
!         
!         
!         
line con 0
 stopbits 1
line 1 2  
 stopbits 1
line 3    
 script dialer lte
 modem InOut
 no exec  
 transport preferred pad telnet rlogin lapb-ta mop udptn v120 ssh
 transport input all
 transport output all
line 4    
 no activation-character
 no exec  
 transport preferred none
 transport input all
 transport output pad telnet rlogin lapb-ta mop udptn v120 ssh
line 8    
 script dialer lte
 no exec  
 transport preferred pad telnet rlogin lapb-ta mop udptn v120 ssh
 transport output pad telnet rlogin lapb-ta mop udptn v120 ssh
line 1/3 1/4
 transport preferred none
 transport input all
 transport output none
 stopbits 1
line 1/5 1/6
 transport preferred none
 transport output none
 stopbits 1
line vty 0 4
 password cisco
 login    
 transport input all
!         
no scheduler max-task-time
!         
!         
!         
!         
end       
          
IR829-mediaGW#

WiFi AP

WiFi PA is configured to provide an open access SSID: http://playbus.cisco.com, which is associated with interface Radio0.

IR829-MGW-AP#show running-config
Building configuration...

Current configuration : 2042 bytes
!
version 15.3
no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
!
hostname IR829-MGW-AP
!
!
logging rate-limit console 9
enable secret 5 $1$VyuW$wgJVFjqXv.dUtp/JnwWAb/
!
no aaa new-model
no ip source-route
no ip cef
!
!
!
!
dot11 pause-time 100
dot11 syslog
!         
dot11 ssid 829MGW5G-HTTP://2.2.2.2
   authentication open 
   guest-mode
!         
dot11 ssid http://playbus.cisco.com
   authentication open 
   guest-mode
!         
!         
!         
no ipv6 cef
!         
!         
username Cisco password 7 05280F1C2243
!         
!         
!         
bridge irb
!         
!         
!         
interface Dot11Radio0
 no ip address
 !        
 ssid http://playbus.cisco.com
 !        
 antenna gain 0
 packet retries 64 drop-packet
 station-role root
 infrastructure-client
 bridge-group 1
 bridge-group 1 subscriber-loop-control
 bridge-group 1 spanning-disabled
 bridge-group 1 block-unknown-source
 no bridge-group 1 source-learning
 no bridge-group 1 unicast-flooding
!         
interface Dot11Radio1
 no ip address
 shutdown 
 !        
 ssid 829MGW5G-HTTP://2.2.2.2
 !        
 antenna gain 0
 peakdetect
 dfs band 3 block
 packet retries 64 drop-packet
 channel dfs
 station-role root
 bridge-group 1
 bridge-group 1 subscriber-loop-control
 bridge-group 1 spanning-disabled
 bridge-group 1 block-unknown-source
 no bridge-group 1 source-learning
 no bridge-group 1 unicast-flooding
!         
interface GigabitEthernet0
 description the embedded AP GigabitEthernet 0 is an internal interface connecting AP with the host router
 no ip address
 bridge-group 1
 bridge-group 1 spanning-disabled
 no bridge-group 1 source-learning
!         
interface BVI1
 mac-address 74a2.e65d.0538
 ip address dhcp client-id GigabitEthernet0
 ipv6 address dhcp
 ipv6 address autoconfig
 ipv6 enable
!         
ip forward-protocol nd
ip http server
no ip http secure-server
ip http help-path http://www.cisco.com/warp/public/779/smbiz/prodconfig/help/eag
ip route 0.0.0.0 0.0.0.0 BVI1
!         
!         
bridge 1 route ip
!         
!         
!         
line con 0
line vty 0 4
 login local
 transport input all
!         
end       
          
IR829-MGW-AP#

Guest Linux (GOS)

USB stick has apache tomcat web server installed. Also it has media files. Java virtual machine is installed under /software/opt/. Note: in some case, it may be required to create softlink using “ln -s /lib /lib64”.

The following is the setup needed to auto start tomcat webserver, set up ethernet interface, GOS routing table.

root@qemux86-64:/mnt/usb/apache-tomcat-8.0.33/webapps/ROOT# ls
IR829              asf-logo.png     bg-nav.png    index.html        tomcat.css
RELEASE-NOTES.txt  bg-button.png    bg-upper.png  index.html.ads    tomcat.gif
WEB-INF            bg-middle.png    build.xml     index.jsp         tomcat.png
asf-logo-wide.gif  bg-nav-item.png  favicon.ico   tomcat-power.gif  tomcat.svg
root@qemux86-64:/mnt/usb/apache-tomcat-8.0.33/webapps/ROOT# 

root@qemux86-64:/etc/init.d# cat wait-run-tomcat.sh | more
#!/bin/bash -f

export JRE_HOME=/software/opt/jre1.8.0_74/

count=1
if [ -f /tmp/wait-run-tomcat.log ]
then
    rm /tmp/wait-run-tomcat.log
fi
touch /tmp/wait-run-tomcat.log

while [ 1 ]
do
   if [ -f $JRE_HOME/bin/java ]
   then
        break
   else
        if [ $count -gt 30 ]
        then
            break
            echo "timeout for JVM ready" >>  /tmp/wait-run-tomcat.log
        else
            let count=count+1
            sleep 2
            echo "sleep 2 second for JVM ready" >> /tmp/wait-run-tomcat.log
        fi
   fi
done

if [ -f  $JRE_HOME/bin/java ]  
then
     /mnt/usb/apache-tomcat-8.0.33/bin/startup.sh >> /tmp/wait-run-tomcat.log
else
    echo "JVM is not found available" >> /tmp/wait-run-tomcat.log
fi



root@qemux86-64:/etc/init.d# 

root@qemux86-64:/etc/rc5.d# cat S90start-tomcat-script 
#!/bin/bash -f

ifconfig svcbr_0 2.2.2.2 netmask 255.255.255.0 up
route add -net 192.168.146.0 netmask 255.255.255.0 gw 2.2.2.1

m=`mount | grep /mnt/usb | wc -l`
if [ $m -eq 0 ]
then 
   mount /dev/sdc1 /mnt/usb > /tmp/tomcat.log
   if [ $? -ne 0 ]
   then
      echo "failed to mount USB " >> /tmp/tomcat.log
      exit 1
   fi
else
  echo "USB is mounted already" >> /tmp/tomcat.log
fi

if [ -f /mnt/usb/apache-tomcat-8.0.33/bin/startup.sh ]
then
    export JRE_HOME=/software/opt/jre1.8.0_74/

    echo "lauch wait and run tomcat" >> /tmp/tomcat.log
    /etc/init.d/wait-run-tomcat.sh &

else
    echo "tomcat is not found available" >> /tmp/tomcat.log
fi


root@qemux86-64:/etc/rc5.d# 

With the above set up in place, the user can use a smart phone or tablet, connect to WiFi SSID “http://playbus.cisco.com”, and open a web browser, type “http://playbus.cisco.com” to enjoy video.

IR829 media GW](/uploads/cisco/ir829-mgw-screenshot.png)

For a full template, Download here