Getting Started with Laird Linux

To get started with the IG60-BL654, you'll need to flash a developer's SD card image to boot the device.

You may also download the board support package source code, and build a custom SD Card image. You can use the prebuilt SDK or create your own custom SDK as needed.

Note that this guide assumes you've fulfilled the development environment requirements specified in the Requirements section.

Downloading a developer's SD card image

Laird Linux releases include a prebuilt SD card image as a starting point for evaluating and integrating a Laird Linux release on a SOM or SOM-based device. For the IG60-BL654, these prebuilt images are found at the IG60 releases page. These releases are named ig60sd-laird-A.B.C.D.tar.bz2. These prebuilt SD card images are good for quickly testing the IG60-BL654 running the latest software.

Flashing a developer's SD card image

Once the image is downloaded. Extract the image. The example below references software version 7.0.3.15:

~/Downloads/ig60llsd$ tar -xvf /ig60llsd-laird-7.0.3.15.tar.bz2 
ig60llsd-laird-7.0.3.15/
ig60llsd-laird-7.0.3.15/ig60llsd-target-sbom-20190222
ig60llsd-laird-7.0.3.15/ig60llsd60sd-host-sbom-20190222
ig60llsd-laird-7.0.3.15/u-boot-spl.bin
ig60llsd-laird-7.0.3.15/u-boot.itb
ig60llsd-laird-7.0.3.15/rootfs.tar
ig60llsd-laird-7.0.3.15/ig60llsd60sd-sdk.tar.bz2
ig60llsd-laird-7.0.3.15/legal-info-20190222.tar.bz2
ig60llsd-laird-7.0.3.15/kernel.itb
ig60llsd-laird-7.0.3.15/mksdcard.sh
ig60llsd-laird-7.0.3.15/mksdimg.sh

To flash the image to an SD card use the mksdcard.sh script. The mksdcard.sh script takes the target device as an argument and will ask if you'd like to proceed with removing all data on your SD card and flashing a new image. This is shown below.

~/Downloads/ig60llsd-laird-7.0.3.15$ sudo ./mksdcard.sh /dev/sdc
[sudo] password for user: 
*************************************************************************
WARNING: All data on /dev/sdc now will be destroyed! Continue? [y/n]
*************************************************************************
[Partitioning /dev/sdc...]
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.653846 s, 1.6 MB/s
DISK SIZE - 1967128576 bytes
Checking that no-one is using this disk right now ... OK

Disk /dev/sdc: 1.9 GiB, 1967128576 bytes, 3842048 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

>>> Created a new DOS disklabel with disk identifier 0x59c337f4.
Created a new partition 1 of type 'W95 FAT16 (LBA)' and of size 48 MiB.
/dev/sdc2: Created a new partition 2 of type 'Linux' and of size 1.8 GiB.
/dev/sdc3: 
New situation:

Device     Boot  Start     End Sectors  Size Id Type
/dev/sdc1  *      2048  100351   98304   48M  e W95 FAT16 (LBA)
/dev/sdc2       100352 3842047 3741696  1.8G 83 Linux

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
[Making filesystems...]
[Copying files...]
[Done]

You can now insert your SD card into the IG60 and press the reset button to boot into the new SD card image.

Using a prebuilt SDK

Laird Linux releases include a prebuilt SDK to start doing application development. For the IG60-BL654, this prebuilt SDK is called ig60sd-sdk-A.B.C.D.tar.bz2 and can be found with each release at the IG60 releases page. The prebuilt SDK includes the toolchain and all development files of the software packages used to generate the prebuilt SD card image from that release. The SDK can be set up for use with an IDE to allow application developers to not need a full BSP on their system. To use the SDK, extract the SDK tarball then run the script relocate-sdk.sh (located at the top directory of the SDK), to make sure all paths are updated with the new location. For more information on using SDKs generated from Laird Connectivity's Buildroot fork, see the Buildroot manual's section on the SDK.

Downloading the board support package source code

First step, pick which release you want. Odds are you want the most recent of your release.

Next, use repo to initalize and fetch your release. This is a two-step process: first you tell repo which manifest to use and then you tell it to fetch everything.

mkdir ig60llsd_7.0.3.15_source
cd ig60llsd_7.0.3.15_source
repo init -u git@github.com:LairdCP/IG60-Laird-Linux-Release-Packages.git -m ig60_7.0.3.15.xml
repo sync

Note: Repo will initialize a .repo directory and then place all files directly in the directory that you are in when you run the repo command. So we recommend making a subdirectory and working in there.

Buildroot cache

In order to speed up builds, set up a Buildroot cache to store sources that Buildroot will download. Off your home directory:

mkdir ~/.br2_dl_dir

Then add it to your build environment:

export BR2_DL_DIR="${HOME}/.br2_dl_dir"

Building the SD Card developer's image

Once your repo sync is finished, you are ready to build your own SD card image. This can be achieved by the following:

cd wb
make ig60llsd

Once your build completes, you will find the output similar to below.

~/git/lrd-7.0.3.15/wb$ cd buildroot/output/ig60llsd/images/
~/git/lrd-7.0.3.15/wb/buildroot/output/ig60sd/images$ ls -al
ig60llsd-target-sbom-20190222
ig60llsd-host-sbom-20190222
u-boot-spl.bin
u-boot.itb
rootfs.tar
ig60llsd-sdk.tar.bz2
legal-info-20190222.tar.bz2
kernel.itb
mksdcard.sh
mksdimg.sh

You can see that the SD card image and the mksdcard.sh script are included.

Create a custom SDK

If you'd like to create a custom SDK from your customized source build, while in the target's output directory, issue a make sdk:

~/git/lrd-7.0.3.15/wb/buildroot/output/ig60llsd$ make sdk

Accessing the Terminal

Connect your IG60 to your computer using two USB-to-Serial cables (genuine FTDI chipset will give the best results), connected together by a 9-pin female-to-female null modem adapter (example).

Note that with some serial cables, two threaded nuts adjacent to the serial connector may get in the way of the connection. It may be necessary to remove these threaded nuts to fit the adapter.

SSH can be used over WiFi and/or Ethernet. However,you must know the IP address of the IG60. Or it is possible for some routers to be configured to resolve local hostnames. For this case, the hostname of the IG60 is "summit". The IG60 can be connected to Wi-Fi using the mobile app. By default, the IG60 will request an IP address from a DHCP server.

The username is "root" and the password is "summit".

During development and evaluation, a serial console program is required. The IG60-BL654's serial console is configured for the following serial parameters:

  • Baud Rate: 115200
  • Data Bits: 8
  • Stop Bits: 1
  • Parity Bit: No
  • Hardware Flow Control: No
  • Software Flow Confrol: No

Laird recommends the use of minicom on Linux or PuTTY on Windows. If using the recommended Ubuntu operating system for evaluation or development, you can install minicom as follows:

$ sudo apt install minicom

Once the IG60-BL654 is connected to your Ubuntu computer, you should have a new /dev/ttyUSB device that has enumerated. Assuming this enumeration is /dev/ttyUSB0, the console of the IG60-BL654 can be accessed with minicom via the following command:

$ sudo TERM=linux minicom -o -D /dev/ttyUSB0

If you power cycle the IG60-BL654 via the Reset button, you should see a boot-up sequence similar to below. The example boot output has been heavily truncated to fit in this guide.

RomBOOT

U-Boot SPL 2018.01-ig60llsd(Jan 31 2019 - 12:56:52)
Trying to boot from MMC0
reading u-boot.itb

U-Boot 2018.01-ig60llsd60sd (Jan 31 2019 - 12:56:52 -0500)

CPU: SAMA5D36
Crystal frequency:       12 MHz
CPU clock        :      528 MHz
...
Hit any key to stop autoboot:  0
reading kernel.itb
4360555 bytes read in 282 ms (14.7 MiB/s)
## Loading kernel from FIT Image at 21000000 ...
...
## Loading loadables from FIT Image at 21000000 ...
   Trying 'script@1' loadables subimage

   Verifying Hash Integrity ... sha256+ OK
   Loading Kernel Image ... OK
   Loading Device Tree to 27732000, end 2773e0a3 ... OK

Starting kernel ...

...

Welcome to Laird Linux development build 20190131!

[  OK  ] Created slice system-serial\x2dgetty.slice.
...
[  OK  ] Started Hostname Service.

Laird Linux development build 20190131
summit login:

Login and Example WiFi Scan

Once you see summit login:, you are at the end of booting and can login using the user "root" and the password "summit". Once logged in, you can query for a basic WiFi scan list to see available networks using the command below:

# nmcli dev wifi list
IN-USE  SSID         MODE   CHAN  RATE        SIGNAL  BARS  SECURITY         
        --           Infra  149   270 Mbit/s  35      **    WPA2             
        NowYouSeeMe  Infra  153   270 Mbit/s  30      *     WPA2             
        wfa19        Infra  149   405 Mbit/s  29      *     WPA2 802.1X      
        wfa9ac       Infra  149   405 Mbit/s  27      *     WPA2             
        wfa0ac       Infra  149   405 Mbit/s  27      *     --               
        wfa18        Infra  149   405 Mbit/s  25      *     WPA1 WPA2 802.1X 
        wfa20        Infra  149   405 Mbit/s  25      *     WPA1 WPA2 802.1X 
        nps_aes      Infra  149   405 Mbit/s  25      *     WPA2 802.1X      
        11w_psk      Infra  149   405 Mbit/s  25      *     WPA2             
        11w_dot1x    Infra  149   405 Mbit/s  25      *     WPA2             
        wfa21        Infra  149   405 Mbit/s  25      *     WPA1 WPA2

NetworkManager

Laird Connectivity uses its own customized fork of NetworkManager for networking configuration, including WiFi profile management. For more information on using NetworkManager please see our Laird NetworkManager User Guide.