Difference between revisions of "SW startup guide for VIBE"
(→Overview) |
(→Radio section) |
||
Line 82: | Line 82: | ||
:q. '''2G Modem Status LED''' : D14 | :q. '''2G Modem Status LED''' : D14 | ||
:r. 2G Debug UART : on Extra UART0 header | :r. 2G Debug UART : on Extra UART0 header | ||
+ | |||
+ | ::*'''Default values of GPIO44 and GPIO45 is high. ''' | ||
+ | ::*'''USB drivers for the modem (21f5:2012, 21f5:2009, 19d2:ffeb, 19d2:fffe) should be included in the kernel. We provide pre-compiled images with USB drivers included in the kernel.''' | ||
== GPS section == | == GPS section == |
Revision as of 03:38, 21 July 2015
VIBE IoT platform is a unique combination of community famous Beaglebone Black with industry standard modem connectivity for WAN. Below, we describe how to set up VIBE and the associated software.
Contents
Overview
VIBE is shipped with its onboard 4GB eMMC flashed with latest Debian Wheezy console image with kernel 3.8.13-bone70. This pre-flashed image is preconfigured with all the settings and with the kernel patches to use all the features on VIBE namely 3G/2G modem, Two USB host port, RTC, GPS(if present), Ethernet Reset over GPIO.
A prebuilt SD Card image(3.65GB) is also available for download as VIBE Debian Wheezy SD card image
Following kernel patches/software configurations are included in the VIBE images :
- RTC enabled in kernel
- USB0 OTG behaviour changed from client to host
- HDMI audio disabled to use Ethernet PHY reset over GPIO
- Device tree overlay file to use 1PPS from GPS module at a GPIO
- USB drivers for 3G modem included in kernel
- Device tree overlay files for UART1 and UART4
Hardware Configurations
Beaglebone Black section
- Processor : VIBE uses TI's Sitara ARM cortex-A8 AM3352 1 Ghz processor(AM3352BZCZ100) which is different from 1GHz AM3358(AM3358BZCZ100) used in original Beaglebone Black. The differences between the two being AM3352 does not have PRU subsystem, EtherCAT and SGX Graphics support.
- USB host ports : VIBE contains two USB 2.0 HS host ports with type A connector whereas original Beaglebone black has only one. VIBE has reconfigured USB0 OTG port as self powered USB hub host ports. So there is no USB client port. USB1 OTG port remains configured as USB 2.0 Host port and used for interface with 3G modem.
- Battery : VIBE can be powered up by 3.7V Li-ion rechargeable battery with automatic backup switch over circuit from 5V DC input and can power up the whole VIBE including 3G/2G modem, both the USB Host ports and HDMI. Original Beaglebone black also supports 3.7V Li-ion Rechargeable battery but with limited functionality of USB host port and HDMI unavailable.
- Ethernet reset : VIBE includes a standalone ethernet reset circuit over GPIO . This addresses a bug in the original beaglebone black where the Ethernet PHY is not detected at bootup and board had to be reset (http://bugs.elinux.org/issues/67).
- In VIBE, the ethernet phy can be individually reset separate from the whole board by toggling gpio GPIO3_21(GPIO 117).
- To use the GPIO ethernet reset feature, HDMI audio has to be disabled in device tree and then GPIO1_27(GPIO 59) has to be pulled low so that GPIO3_21 is available for use.
- Watchdog Timer : VIBE includes a watchdog timer circuit which can generate an external reset to PMIC and address the Under Voltage Lockout(UVLO) issue faced in Original Beaglebone Black. If the PMIC TPS65217C enters in UVLO and is not resolved within 10s, watchdog timer will generate an external reset to PMIC.
- Real Time Clock : VIBE has an accurate Real Time clock with an integrated temperature compensated oscillator and crystal. It includes a 3V non-chargeable coin cell ( CR1025/CR1216/CR1220) for standby.
- Extra UART0 header at the edge of the board for easy handling and convenience.
- Fully compatible Beaglebone Black expansion header. Most of the LCD capes are compatible with VIBE.
Radio section
VIBE has an option between 2G/GPRS modem and 3G/HSPA (3G/CDMA) modem for WAN connectivity.
- 2G modem : The 2G modem is interfaced via UART to UART1 port of the AM3352 processor on VIBE. There are following versions for different regions :
- Quad-Band(2G-Q) : For Global connectivity covering bands GSM 850/EGSM 900/DCS 1800/PCS 1900 with data rates of 85.6kbps DL/42.8kbps UL.
- Dual-Band(2G-D) : For Asia/Europe connectivity covering bands EGSM 900/DCS 1800 with data rates of 85.6kbps DL/42.8kbps UL.
- 3G modem : The 3G modem is interfaced via USB2.0 HS on USB1 Host port of AM3352 processor on VIBE. There are following versions for different regions in both GSM/HSPA and CDMA/EVDO :
- 3G HSPA-A (3GH-A) : For Asia/Europe connectivity covering bands WCDMA 2100 and GSM 850/EGSM 900/DCS 1800/PCS 1900 with data rates of 7.2Mbps DL/5.76Mbps UL.
- 3G HSPA-B (3GH-B) : For Americas connectivity covering bands WCDMA 2100/850 and GSM 850/EGSM 900/DCS 1800/PCS 1900 with data rates of 7.2Mbps DL/5.76Mbps UL.
- 3G HSPA-C (3GH-C) : For Asia/Europe/Australia Connectivity covering bands WCDMA 2100/900 and GSM 850/EGSM 900/DCS 1800/PCS 1900 with data rates of 7.2Mbps DL/5.76Mbps UL.
- 3G HSPA-D (3GH-D) : For Global connectivity covering bands WCDMA 850/1900/2100 and GSM 850/EGSM 900/DCS 1800/PCS 1900 with data rates of 3.6Mbps DL/384kbps UL.
- 3G CDMA (3GC-A) : For Global connectivity covering bands CDMA 800/1900 with data rates of 3.1Mbps DL/1.8Mbps UL.
- 3GH-A/B/C and 3GC-A modems create ports /dev/ttyUSB0, /dev/ttyUSB1 and /dev/ttyUSB2 with ports assigned as :
- a. /dev/ttyUSB0 : Modem port and AT commands port
- b. /dev/ttyUSB2 : AT commands port
- 3GH-D modem creats ports /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2, /dev/ttyUSB3 with ports assigned as :
- a. /dev/ttyUSB1 : AT commands port
- b. /dev/ttyUSB3 : Modem port and AT commands port
Both 2G/3G modems have following control interfaces :
- a. Modem Hard reset over GPIO - GPIO44
- b. Modem Hard reset over push button switch - S5
- c. Modem On/Off over GPIO - GPIO45
- d. Modem On/Off over push button switch - S4
- e. Netlight/Signal LED - D15 (this feature is optional in 3GH-A/B/C and 3GC-A modules)
- f. 3G Modem Antenna - On-module GSC connector
- g. 2G Modem Antenna - uFL connector
- h. 3G Modem Wakeup_out/ 2G/3G UART RI - GPIO26
- i. Modem Interface - 2G : UART1 (rx,tx) ; 3G : USB2.0 HS USB1 (and UART1 - optional)
- j. SIM/RUIM card - 6 pin Push-pull mini-sim card connector
- k. Audio - 3.5mm TRRS Analog stereo audio and mic jack(optional)
Additional interfaces for 2G modem only :
- l. UART RTS : I2C1_SCL(UART1_RTS)
- m. UART CTS : I2C1_SDA(UART1_CTS)
- n. UART DTR : GPIO61
- o. UART DCD : GPIO65
- p. 2G Modem Status GPIO : GPIO47
- q. 2G Modem Status LED : D14
- r. 2G Debug UART : on Extra UART0 header
- Default values of GPIO44 and GPIO45 is high.
- USB drivers for the modem (21f5:2012, 21f5:2009, 19d2:ffeb, 19d2:fffe) should be included in the kernel. We provide pre-compiled images with USB drivers included in the kernel.
GPS section
- GPS module : The state(on/off) of the GPS modem can be seen with the 3.3 V D17 Led and the D16 Led is the GPS fix Led. When the Module has acquired GPS fix, this LED D16 starts blinking at 1s OFF/1s ON. the 1 pps/Hz output can be accessed from GPIO0_27. GPIO50 is used for resetting the GPS modem and it should be pulled high all the time. GSC connector is available and the GPS antennae can be attached through it. The NMEA0183 Ver. 3.01 ASCII can be accessed on the ttyO4 port at a baud rate of 19200.
Getting started
Setting up the system
- Place a mini SIM in the SIM card slot and connect a GSM antenna to the SMA connector.
- Ensuring that the power jumper on the VIBE is in its place, power up the setup using a 5V DC adapter(min 2.5A) to barrel jack.
- After powering the VIBE, log into it by any of the following option :
- a. Through USB Client
- b. Through Ethernet Cable
- Now login by using the SSH command. Make sure to login as root only so that all the special privileges are available.
- A. Through USB client.
- Use the command :
ssh -l root 192.168.7.2
- to login onto the system. Default password is root.
- B. Through Ethernet cable.
- The IP address of Ethernet interface of VIBE should be known for this option. Use that IP address with the ssh command to establish a connection
ssh -l root $IP_address
- Default Username and password is root.
- In Yantrr Precompiled images, IP address is 192.168.1.150
- After logging into the VIBE system, export and set the GPIO45 and GPIO60 high by using:
cd /sys/class/gpio/ echo 45 > export echo 60 >export cd gpio45 echo “high” > direction cd .. cd gpio60 echo “high” > direction
- NOTE : In precompiled image, for ease of use these regular commands for use with the GPIOs have been created as functions : pinexp, setout, setin, pinread.
pinexp 45 pinexp 60 setout 45 high setout 60 high
Power On Modem
The Modem can be powered on by providing a low level pulse at ON/OFF Pin for 3-4s when the module is off. It can be achieved by either using the push button switch S1 or GPIO45.
cd /sys/class/gpio/ echo 45 > export cd gpio45 echo "high" > direction sleep 4 echo "low" > direction sleep 4 echo "high" > direction
- After some time, LED D4 should start blinking as to indicate modem has turned on.
Check that modem is visible on the USB bus by:
lsusb Bus 001 Device 002: ID 0424:2412 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 034: ID 21f5:2012 Bus 001 Device 007: ID 046d:0825 Logitech, Inc. Webcam C270
Assigning driver on the USB modem (Not needed if using pre-built images)
modprobe usbserial vendor=0x21f5 product=0x2012
lsusb Bus 001 Device 002: ID 0424:2412 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 034: ID 21f5:2012 Bus 001 Device 007: ID 046d:0825 Logitech, Inc. Webcam C270
System messages (logs) show what happened when modem was turned on and its drivers were assigned after applying modprobe usbserial. For pre-compiled image, log messages are similar.
dmesg | grep -i usb usb 1-1.1: New USB device found, idVendor=21f5, idProduct=2012 usb 1-1.1: New USB device strings: Mfr=3, Product=2, SerialNumber=4 usb 1-1.1: Product: StrongRising Technologies usb 1-1.1: Manufacturer: Modem usb 1-1.1: SerialNumber: 000000000002 usb 1-1.1: usb_probe_device usb 1-1.1: configuration #1 chosen from 1 choice usb 1-1.1: adding 1-1.1:1.0 (config #1, interface 0) usbserial_generic 1-1.1:1.0: usb_probe_interface usbserial_generic 1-1.1:1.0: usb_probe_interface - got id usbserial_generic 1-1.1:1.0: The "generic" usb-serial driver is only for testing and one-off prototypes. usbserial_generic 1-1.1:1.0: Tell linux-usb@vger.kernel.org to add your device to a proper driver. usbserial_generic 1-1.1:1.0: generic converter detected usb 1-1.1: generic converter now attached to ttyUSB0 usb 1-1.1: adding 1-1.1:1.1 (config #1, interface 1) usbserial_generic 1-1.1:1.1: usb_probe_interface usbserial_generic 1-1.1:1.1: usb_probe_interface - got id usbserial_generic 1-1.1:1.1: The "generic" usb-serial driver is only for testing and one-off prototypes. usbserial_generic 1-1.1:1.1: Tell linux-usb@vger.kernel.org to add your device to a proper driver. usbserial_generic 1-1.1:1.1: generic converter detected usb 1-1.1: g'''eneric converter now attached to ttyUSB1''' usb 1-1.1: adding 1-1.1:1.2 (config #1, interface 2) usbserial_generic 1-1.1:1.2: usb_probe_interface usbserial_generic 1-1.1:1.2: usb_probe_interface - got id usbserial_generic 1-1.1:1.2: The "generic" usb-serial driver is only for testing and one-off prototypes. usbserial_generic 1-1.1:1.2: Tell linux-usb@vger.kernel.org to add your device to a proper driver. usbserial_generic 1-1.1:1.2: generic converter detected usb 1-1.1: '''generic converter now attached to ttyUSB2'''
- It is recommended to add a proper driver for the modem in kernel. The generic driver is not reliable.
- Note : If the modem is not visible after these steps or any issues are faced while initializing the modem please contact Yantrr Support (support@yantrr.com) with the above log messages (dmesg | grep –I usb or /var/log/syslog).
Understanding the TTYO ports on VIBE-2G
The 2G modem on VIBE-2G OR VIBE-2G-GPS/TIM board is connected via UART1.
VIBE-2G enumerate 2 different ports:
/dev/ttyO0 /dev/ttyO1
All the “AT Command” set can be accessed on ttyO1 port with the baud rate of 115200. Over UART1 port we can communicate with the modem and also AT commands can be executed whenever required. The UART port of modem is available at one instant only, either it is establishing ppp connection or AT commands are executed on it.
Understanding the TTYUSB ports on VIBE-3G
The 3G modem on VIBE-3G OR VIBE-3G-GPS/TIM board is connected via USB1 host port.
VIBE-3G enumerate 3 different usb ports:
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2
- ttyUSB0 is data port & command for modem, use this for the WVDIAL conf or PPP
- ttyUSB1 is the diag port for the Firmware upgrade
- ttyUSB2 is the AT CMD port only.
- Note :These ttyUSB ports are only created if proper drivers are present or when “modprobe usbserial” command is issued. Pre compiled images with drivers are available on the Yantrr wiki page.
- Note : Both ttyUSB0 and ttyUSB2 take the AT commands, but ttyUSB0 port is also a Data communications port so for all intended purposes of issuing AT commands use ttyUSB2 port(PCUI port).
Power Off Modem
The modem can be powered off by providing a low level pulse at ON/OFF pin for 3-4s when the module is On. It can be achieved by either using the push button switch S1 or GPIO45.
cd /sys/class/gpio/ echo 45 > export cd gpio45 echo "high" > direction sleep 4 echo "low" > direction sleep 4 echo "high" > direction
Modem can also be turned off by issuing following AT commands on port /dev/ttyUSB2
AT+ZPWROFF
Soft Resetting the Modem
Steps -
- Power Off the Modem.
- Wait for 1-2s at least.
- Power on the modem.
Hard Resetting the Modem
There might arise situations where modem does not seem to be responding to any commands issued on AT commands port or it cannot be turned on/off. In such scenarios, issue hard reset to the modem. It can be done by either toggling Switch S2 for at least 100ms or pulling GPIO60 low for 1s and then setting it high again.
cd /sys/class/gpio/ cd gpio60 echo "low" > direction sleep 1 echo "high" > direction
- Note : Please use hard reset conservatively. Soft reset should be preferred under most conditions.
AT Commands Manual
The AT Command for the 3G Module can be downloaded from here : WCDMA AT Commands Manual
Data connection procedure using PPP
Notes
- All commands are recommended to executed as root user.
- UART1(dev/ttyO1) should be enabled in the kernel of VIBE-2G, VIBE-2G-GPS/TIM by applying its device tree overlay from /lib/firmware directory
- USB drivers need to be installed in the kernel of VIBE-3G,VIBE-3G-GPS/TIM for the WCDMA modem to work.
- Modem port for VIBE-3G is ttyUSB0, use this port for PPPd or Wvdial
- AT Commands port for VIBE-3G is ttyUSB2
Wvdial Configuration for Debian Wheezy
- Download and install Wvdial
- For VIBE-2G and VIBE-2G-GPS/TIM
- For VIBE-3G and VIBE-3G-GPS/TIM
- After editing wvdial.conf, save and exit, now run wvdial for establishing communication.
- To check the status of wvdial and find out its IP open a new shell and use either of following:
- Run ifconfig and find ppp0 in the list of network connections.
- Check the network statistics for IP and their gateways and check the Iface column for ppp0
- Read the system messages as
apt-get install wvdial
Executing the following command usually sets the wvdial.conf file which is used for dialing to GPRS communication, but since here our modem port is on a UART(/dev/ttyO1) and not on /dev/ttyS* or /dev/ttyUSB* ports, we will have to manually configure it. So, open the wvdial.conf file
$ nano /etc/wvdial.conf
Assuming that you have the USERNAME, PASSWORD and APN available for the service provider of the SIM card being used, edit and make wvdial.conf file like this. Sample Wvdial files for some service providers are given HERE
[Dialer Defaults] Modem Type = Analog ModemPhone = *99# ISDN = 0 Baud = 115200 Username = USERNAME Password = PASSWORD Modem = /dev/ttyO1 Init1 = ATZ Init2 = at+cgdcont=1,"ip","APN" Stupid Mode = 1
Usually for GSM Networks, ModemPhone is *99# or *99***1#. Consult your network provider for exact details in case you are facing any difficulties.
open the wvdial.conf file
$ nano /etc/wvdial.conf
Assuming that you have the USERNAME, PASSWORD and APN available for the service provider of the SIM card being used, edit and make wvdial.conf file like this. Sample Wvdial files for some service providers are given HERE
[Dialer Defaults] Modem Type = Analog ModemPhone = *99# ISDN = 0 Baud = 115200 Username = USERNAME Password = PASSWORD Modem = /dev/ttyUSB0 Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Init3 = at+cgdcont=1,"ip","APN" Stupid Mode = 1
Consult your network provider for exact details in case you are facing any difficulties.
$ wvdial
If all parameters are correct and everything is working, you should see a success message from wvdial. Once PPP connection has been established, you will see a ppp0 IP.
$ ifconfig or $ ifconfig ppp0
$ netstat -arn * Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.7.0 0.0.0.0 255.255.255.252 U 0 0 0 usb0 192.200.1.21 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
$ cat /var/log/messages
It lists all the attempts at establishing ppp communication using the modem and IPs for the successful attempt.
Now all that is left is to route the network traffic over the gateway of ppp0 instead of eth0 so that GPRS communication is fully completed.
PPP connection has been established over GPRS using 2G/3G module and wvdial.
System Status
After PPP has been established, the following is the status of the LEDs and GPIOs (For verification)
- STATUS LED D3 – It is continuously glowing, once the Modem was turned on.
- SIGNAL LED D4 – It is now blinking at 64ms ON/300ms OFF . Earlier when PPP was not established but SIMcard was detected by modem, then it was blinking at 64ms ON/3000ms OFF.
- ON/OFF GPIO45 – Its value should be 1.
- RESET GPIO60 – Its value should always be 1.
Adding a DNS
nano /etc/resolv.conf add following
nameserver 8.8.8.8 nameserver 208.67.222.222
These are public name servers, and you are free to use any other if they do not work.
Using GPS module with Debian Wheezy
To read the NMEA messages from the GPS Module of VIBE :
- Enable UART4 (/dev/ttyO4) in device tree kernel.
#cd /lib/firmware #echo BB-UART4 > /sys/devices/bone_capemgr.9/slots''
- You can read the slots or use dmesg to see that UART4 has been enabled.
#cat /sys/devices/bone_capemgr.9/slots''
- Output will be like this :
''0: 54:PF---'' ''1: 55:PF---'' ''2: 56:PF---'' ''3: 57:PF---'' ''4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G'' ''5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI'' ''7: ff:P-O-L Override Board Name,00A0,Override Manuf,BB-UART4''
- Install Minicom or use the following commands to see NMEA messages
#apt-get install minicom'' #minicom –s'' (port settings /dev/ttyO4 19200 8N1)
or
#stty –F /dev/ttyO4 19200 raw'' #cat /dev/ttyO4''
- For more information and detailed guide on Time synchronization and GPS Location , please refer to the App note - GPS Location and time synchronization