Troubleshooting WaRP Button Issues

There are a variety of reasons why the push buttons on the WaRP may not be behaving as intended. This guide will help determine if the cause is due to configuration, firmware, software or a hardware issue.

First, from a serial console adb shell, check that /dev/ttymxc2 is configured correctly:

root@warp:/ # stty -F /dev/ttymxc2
stty -F /dev/ttymxc2
speed 115200 baud; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost
-isig -icanon -iexten -echo

If the baudrate is not 115200 or if other settings are different, communication between the DB and WaRP is likely not working. This can be set manually, but a better solution is to flash the system with the latest Android images.

Next, check whether button presses are being received by the WaRP from the daughterboard by using cat on /dev/ttymxc2. Put it in the background so that it continues displaying UART data received while you move onto the next step.

root@warp:/ # cat /dev/ttymxc2 &
cat /dev/ttymxc2 &

Pressing the daughterboard buttons should now result in the WaRP mainboard receiving and printing messages indicating button down [0] and button up [1] events:

{"BTN0":0}
{"BTN0":1}
{"BTN1":0}
{"BTN1":1}

If messages are not being received, the daughterboard may not be functioning correctly or may have an old firmware. To check the firmware version we can toggle the daughterboard RESET# line using the iMX6SL gpio from the command line, which will cause the daughterboard to report a start-up condition and the firmware version running.

Note that GPIO93 (KEY_ROW2) is valid only for revision 1.10 of the WaRP (pre-production boards). Production boards will use GPIO95 instead.

  1. Set up GPIO93 for control from command line
  2. Set GPIO93 as an output
  3. Set the value of GPIO93 low to initiate a reset
  4. Set the value of GPIO93 high to release the reset signal
  5. KL16 will reset and send start-up messages, including version number to /dev/ttymxc2
root@warp:/ # echo 93 > /sys/class/gpio/export
root@warp:/ # echo out > /sys/class/gpio/gpio93/direction
root@warp:/ # echo 0 > /sys/class/gpio/gpio93/value
root@warp:/ # echo 1 > /sys/class/gpio/gpio93/value

Start-up message:

{"SYSMSG":"WaRP Daughterboard Started","Version":"0.1beta-20150302"}
{"MMA9553L":"Status","data":{"steps":0,"distance":0,"speed":0,"calories":0}}
0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *