AVR-IoT WG Notes

Get your things on the Internet in 30 Seconds Flat with the AVR-IoT board!


In case anybody else has similar issues getting the AVR-IoT WG demo application running in "30 Seconds Flat," here are my notes on two problems I had following the Getting Started instructions in the User Guide.

Connecting to the Wi-Fi Network

The recommended procedure is as follows.

  1. Connect the AVR-IoT WG to your computer with a mini-USB cable

  2. Open the CURIOSITY drive and select CLICK-ME.HTM — this redirects you to the AVR-IoT web demo application, which has a URL like https://avr-iot.com/device/0123215BE1D6C474FE

  3. Use the provided form to create and save WIFI.CFG to your computer with your network information

  4. Drag WIFI.CFG to the CURIOSITY drive

When everything is working, the red LED on the AVR-IoT WG should turn off and be replaced by a pleasant blue LED and a flashing yellow LED (indicating that the light and temperature sensor data is being published).

Problem 1: Dragging WIFI.CFG doesn’t work

In my experience, simply dragging WIFI.CFG over to the CURIOSITY drive didn’t work. I have read that repeating the drag-and-drop process can eventually work, but there is another way to update the Wi-Fi configuration using the serial command line interface that I feel is more robust.

For this you will need to use a serial terminal application (like pySerial’s Miniterm) to send the wifi command.

wifi SSID,PASSWORD,2 (1)
1 Replace SSID and PASSWORD with the name and password of your Wi-Fi network. The last number is the security option for your network: one of the three options (1–3) outlined in the documentation.
Wi-Fi Security Options

Here is how it looks using miniterm.py. (The -e flag echoes the input.)

$ miniterm.py -e /dev/ttyACM0
--- Miniterm on /dev/ttyACM0  9600,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
Unknown command. List of available commands:
wifi <ssid>[,<pass>,[authType]]
Serial Port Permissions

If you get a permissions error connecting to the AVR-IoT serial interface, you will need to update the permissions of the /dev/ttyACM0 device. Here is how to do this in Linux (Fedora).

could not open port '/dev/ttyACM0': [Errno 13] could not open port /dev/ttyACM0: [Errno 13] Permission denied: '/dev/ttyACM0'

A quick fix is to update the permissions until you next login.

$ sudo chmod 0666 /dev/ttyACM0

A permanent solution is to add a rule for the TTY serial-USB device in /etc/udev/rules.d/.

$ cat /etc/udev/rules.d/99-ttyacm.rules
# Rule for /dev/ttyACM0

SUBSYSTEM=="tty", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2175", ATTRS{serial}=="ATML3203051800007956", MODE="0666"

In the above, the idVendor and idProduct values are found using lsusb.

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 04f3:0903 Elan Microelectronics Corp.
Bus 001 Device 003: ID 8087:0a2b Intel Corp.
Bus 001 Device 002: ID 04f2:b56b Chicony Electronics Co., Ltd
Bus 001 Device 005: ID 03eb:2175 Atmel Corp. (1)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
1 03eb:2175 is the idVentor:idProduct, respectively.

The serial number serial can be found using udevadm.

$ udevadm info -a -n /dev/ttyACM0 | grep '{serial}' | head -n 1
    ATTRS{serial}=="ATML3203051800007956" (1)
1 The serial number is unique to your AVR-IoT WG device.

After adding the new rule, it should be detected automatically next time you plug in the AVR-IoT WG device.

When I opened CLICK-ME.HTM, I was redirected to


Instead of dashes, the URL is suppose to contain the unique device ID for the board. This ID can be found using the device command in the serial command line interface.

$ miniterm.py -e /dev/ttyACM0
--- Miniterm on /dev/ttyACM0  9600,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
0123215BE1D6C474FE (1)
1 Device ID

With this device ID, navigating to


will successfully open the demo application.