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.
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.
The web server deployed in Guest Linux (GOS) fetchs the video from USB memory stick
GOS sends packet IOS.
IOS routes the packet to WiFi AP module.
WiFi AP module transmits the packet to smart phone.
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.
For a full template, Download here