Monica HoustonFrank Ononye
Published © Apache-2.0

Getting Started with Yocto on MaaXBoard

MaaXBoard and MaaXBoard Mini run Yocto! Here's how to get started.

IntermediateProtip2 hours1,710
Getting Started with Yocto on MaaXBoard

Things used in this project

Hardware components

MaaxBoard
Avnet MaaxBoard
×1
MaaXBoard Mini
Avnet MaaXBoard Mini
×1
32GB micro SD card
×1
Avnet 5V/3A USB Type-c power supply
×1
HDMI monitor (optional)
×1
USB keyboard and mouse (optional)
×1
Avnet MIPI-CSI Camera (optional)
or USB webcam
×1
Avnet MaaXBoard 7" MIPI Display
×1

Software apps and online services

Yocto Project
Yocto Project

Story

Read more

Code

wifi_sta_connect.sh

SH
Connect to wifi:
./wifi_sta_connect.sh [IP address] [password]
#!/bin/sh

sudo ifconfig wlan0 up
if [ $# -eq 0 ] || [ "$1" = "--help" ] || [ "$1" = "-h" ]; then
    echo ""
    echo "Usage: $0 <SSID> <password>"
    echo ""
    sleep 1
    echo ""
    echo "Scan for existing network"
    iw dev wlan0 scan | grep "^.SSID"
    exit
fi

### stop wpa_supplicant process
output=`ps -ef | grep -v grep | grep wpa_supplicant`
echo $output
if [ -n "$output" ]; then
   killall wpa_supplicant
fi

if [ $# -eq 2 ]; then
    sudo wpa_passphrase $1 $2 > /etc/wpa_supplicant.conf;
elif [ $# -eq 1 ]; then
    sudo wpa_passphrase $1 > /etc/wpa_supplicant.conf;
fi

sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf -D nl80211
echo
echo "wait for getting IP ..."
sudo udhcpc -i wlan0

echo
exit

wifi_stop

SH
to disconnect wifi: ./wifi_stop.sh
#!/bin/sh

########## variables ##########
WLAN=wlan0

########## body ##########
echo "Terminating DHCP"
udhcpcid=`ps -ef | grep -v grep | grep udhcpc | awk '{print $2}'`
echo $udhcpcid
if [ -n "$udhcpcid" ]; then
   kill -9 $udhcpcid
fi
dpcpdid=`ps -ef | grep -v grep | grep udhcpd | awk '{print $2}'`
echo $dpcpdid
if [ -n "$dpcpdid" ]; then
   kill -9 $dpcpdid
fi

echo "Terminating hostapd"
### stop hostapd process
hostapid=`ps -ef | grep -v grep | grep hostapd`
echo $hostapid
if [ -n "$hostapid" ]; then
   killall hostapd
fi

echo "Terminating wpa_supplicant"
### stop wpa_supplicant process
wapid=`ps -ef | grep -v grep | grep wpa_supplicant`
echo $wapid
if [ -n "$wapid" ]; then
   killall wpa_supplicant
fi
echo "$WLAN has been disconnected on STA mode and AP mode !"

bluetooth_start.sh

SH
Start bluetooth with this command:
./bluetooth_start.sh
#!/bin/bash

hciattach /dev/ttymxc3 bcm43xx 115200

hciconfig hci0 up
sleep 1
hciconfig scan
hcitool dev
hcitool scan

./wifi_ap_start.sh

SH
To open a Wi-Fi hotspot, connect the network cable to J13, execute the following instructions on the serial terminal: ./wifi_ap_start.sh
#!/bin/sh

########## variables ##########

WLAN=wlan0
HOSTAPD_CONF=/etc/hostapd_mx8.conf
IP_ADDR=192.168.43.1
DHCP_CONF=/etc/udhcpd.conf
UDHCPD_LEASEES=/var/lib/misc/udhcpd.leases

########## body ##########

### check for configuration file
if [ ! -f $HOSTAPD_CONF ]; then
 cp -f hostapd.conf $HOSTAPD_CONF
 chmod 777 $HOSTAPD_CONF
fi

### check udhcpd.conf udhcpd.leases
if [ ! -f $DHCP_CONF ]; then
 cp -f udhcpd.conf $DHCP_CONF
 chmod 777 $DHCP_CONF
fi
if [ ! -f $UDHCPD_LEASEES ]; then
 touch $UDHCPD_LEASEES
 chmod 777 $UDHCPD_LEASEES
fi

### configure ip forewarding
echo 1 > /proc/sys/net/ipv4/ip_forward

### configure ip
ifconfig $WLAN $IP_ADDR netmask 255.255.255.0 up
sleep 1

### start a hostapd interface, if not present
hostapd $HOSTAPD_CONF &
sleep 1

### start udhcpd server, if not started
udhcpd -fS $DHCP_CONF &

### configure the routing table
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Camera

SH
Camera application. Make sure you have a screen connected to the MaaXBoard and run ./Camera
No preview (download only).

udhcpd.conf

SH
udhcpd configuration file is necessary for wifi_sta_sh
# Sample udhcpd configuration file (/etc/udhcpd.conf)
# Values shown are defaults

# The start and end of the IP lease block
start           192.168.43.20
end             192.168.43.254

# The interface that udhcpd will use
#interface      eth0
interface       wlan0

# The maximum number of leases (includes addresses reserved
# by OFFER's, DECLINE's, and ARP conflicts). Will be corrected
# if it's bigger than IP lease block, but it ok to make it
# smaller than lease block.
#max_leases     254

# The amount of time that an IP will be reserved (leased to nobody)
# if a DHCP decline message is received (seconds)
#decline_time   3600

# The amount of time that an IP will be reserved
# if an ARP conflict occurs (seconds)
#conflict_time  3600

# How long an offered address is reserved (seconds)
#offer_time     60

# If client asks for lease below this value, it will be rounded up
# to this value (seconds)
#min_lease      60

# The location of the pid file
#pidfile        /var/run/udhcpd.pid

# The location of the leases file
#lease_file     /var/lib/misc/udhcpd.leases

# The time period at which udhcpd will write out leases file.
# If this is 0, udhcpd will never automatically write leases file.
# Specified in seconds.
#auto_time      7200

# Every time udhcpd writes a leases file, the below script will be called
#notify_file                    # default: no script
#notify_file    dumpleases      # useful for debugging

# The following are bootp specific options
# next server to use in bootstrap
#siaddr         192.168.0.22    # default: 0.0.0.0 (none)
# tftp server name
#sname          zorak           # default: none
# tftp file to download (e.g. kernel image)
#boot_file      /var/nfs_root   # default: none

# Static leases map
#static_lease 00:60:08:11:CE:4E 192.168.0.54
#static_lease 00:60:08:11:CE:3E 192.168.0.44

# The remainder of options are DHCP options and can be specified with the
# keyword 'opt' or 'option'. If an option can take multiple items, such
# as the dns option, they can be listed on the same line, or multiple
# lines.
# Examples:
opt     dns     8.8.8.8 8.8.4.4 #public google dns servers
option  subnet  255.255.255.0
opt     router  192.168.43.1
#opt    wins    192.168.10.10
#option dns     129.219.13.81   # appended to above DNS servers for a total of 3
#option domain  local
option  lease   864000          # default: 10 days
# Arbitrary option in hex form:
option  0x08    01020304        # option 8: "cookie server IP addr: 1.2.3.4"

# Currently supported options (for more info, see options.c):
#opt lease      NUM
#opt subnet     IP
#opt broadcast  IP
#opt router     IP_LIST
#opt ipttl      NUM
#opt mtu        NUM
#opt hostname   STRING          # client's hostname
#opt domain     STRING          # client's domain suffix
#opt search     STRING_LIST     # search domains
#opt nisdomain  STRING
#opt timezone   NUM             # (localtime - UTC_time) in seconds. signed
#opt tftp       STRING          # tftp server name
#opt bootfile   STRING          # tftp file to download (e.g. kernel image)
#opt bootsize   NUM             # size of that file
#opt rootpath   STRING          # (NFS) path to mount as root fs
#opt wpad       STRING
#opt serverid   IP              # default: server's IP
#opt message    STRING          # error message (udhcpd sends it on success too)
#opt vlanid     NUM             # 802.1P VLAN ID
#opt vlanpriority NUM           # 802.1Q VLAN priority
# Options specifying server(s)
#opt dns        IP_LIST
#opt wins       IP_LIST
#opt nissrv     IP_LIST
#opt ntpsrv     IP_LIST
#opt lprsrv     IP_LIST
#opt swapsrv    IP
# Options specifying routes
#opt routes     IP_PAIR_LIST
# Obsolete options, no longer supported
#opt logsrv     IP_LIST # 704/UDP log server (not syslog!)
#opt namesrv    IP_LIST # IEN 116 name server, obsolete (August 1979!!!)
#opt cookiesrv  IP_LIST # RFC 865 "quote of the day" server, rarely (never?) used
#opt timesrv    IP_LIST # RFC 868 time server, rarely (never?) used
# TODO: in development
#opt userclass  STRING          # RFC 3004. set of LASCII strings. "I am a printer" etc
#opt sipserv    STRING LIST     # RFC 3361. flag byte, then: 0: domain names, 1: IP addrs
#opt staticroutes   STATIC_ROUTES
#opt msstaticroutes STATIC_ROUTES

Credits

Monica Houston

Monica Houston

75 projects • 446 followers
I don't live on a boat anymore.
Frank Ononye

Frank Ononye

4 projects • 10 followers

Comments