embedded-trainings-2020/embedded-workshop-book/src/troubleshoot-usb-dongle.md
2020-09-21 14:02:14 +02:00

54 lines
2.3 KiB
Markdown

# Dongle USB functionality is not working
> NOTE: this section only applies to the Beginner workshop
If you don't get any output from `serial-term` it could just have been that first line got lost when re-enumerating the device from bootloader mode to the loopback application.
Start `serial-term` in one console window.
In another window, run these *two* commands:
``` console
$ change-channel 20
requested channel change to channel 20
$ change-channel 20
requested channel change to channel 20
```
If you get *two* lines of output in `serial-term` like this, you are good to go:
``` console
$ serial-term
now listening on channel 20
now listening on channel 20
```
Return to the ["Interference"] section.
🔎 `serial-term` shows you the log output that the Dongle is sending to your computer via the serial interface (not over the wireless network!). After you've ran `change-channel`, it tells you that it is now listening for network traffic on channel 20. This is helpful for debugging, but not mission-critical.
["Interference"]: /dongle.html#interference
If you only get one line of output then your OS may be losing some serial data -- we have seen this behavior on some macOS machines. You will still be able to work through the exercises but will miss log data every now and then. Return to the ["Interference"] section.
If you don't get *any* output from `serial-term` and/or the `change-channel` command fails then the Dongle's USB functionality is not working correctly.
In this case you should flash one of the `loopback-nousb*` programs:
Put the device in bootloader mode again. Now, run
```console
$ dongle-flash loopback-nousb21 # you can pick 11, 16, 21 or 26
```
❗️ The number in the `loopback-nousb*` file name is the radio channel the Dongle will listen on. This means that when you program the Development Kit to send data to the Dongle, you need to ensure they are communicating on the same channel by setting
```rust
/* make sure to pass the channel number of the loopback-nousb* program you picked */
radio.set_channel(Channel::_21);
```
Note that the `loopback-nousb*` programs do not send you any logs via `serial-term` for debugging but you will be able do the exercises nonetheless.
For your debugging convenience, the Dongle will toggle the state of its green LED when it receives a packet.
When you're done, return to the ["Interference"] section.