Build
=====

First, configure Buildroot for your WarpBoard.
  make warpboard_defconfig

Build all components:
  make

You will find in ./output/images/ the following files:
  - imx6sl-warp.dtb
  - rootfs.ext4
  - rootfs.tar
  - sdcard.img
  - u-boot.imx
  - zImage

Update uboot
============

- Put warpboard in USB download mode by closing the j2 jumper on the
  daugther board

- Load u-boot.imx in the WarpBoard by using the imx-usb-loader host utility:

  $ ./output/host/bin/imx_usb -c output/host/etc/imx-loader.d/ output/images/u-boot.imx

- U-Boot will appear in minicom

- Reset the U-Boot environment to its default:
 => env default -f -a
 => saveenv

- Run the DFU command in U-Boot:
 => dfu 0 mmc 0

- Transfer U-Boot into flash by running this command in host side:

 $ sudo ./output/host/bin/dfu-util -D output/images/u-boot.imx -a boot

- remove power and put the WarpBoard back into normal boot mode by
  opening the j2 jumper.

Update linux & rootfs
=====================

Run the 'ums' command from the U-Boot prompt to mount the eMMC as USB mass
storage:

=> ums 0 mmc 0

And then flash the sdcard.img into the eMMC:

  dd if=output/images/sdcard.img of=/dev/<your-sd-device>

*** WARNING! This will destroy all the eMMC content. Use it with care! ***

Using bluetooth
================

Enable the bluez_utils or bluez5_utils package, and then run:

$ hciattach /dev/ttymxc4 any
$ hciconfig hci0 up

Using Wifi
==========

# modprobe brcmfmac
# iwconfig wlan0 essid ACCESSPOINTNAME
# wpa_passphrase ACCESSPOINTNAME > /etc/wpa.conf
(enter the wifi password and press enter)
# wpa_supplicant -Dwext -iwlan0 -c /etc/wpa.conf &
# udhcpc -i wlan0
# ping buildroot.org

Enjoy!
