[brewblox] No compatible USB devices found


I know it’s still beta, but I tried to install brewblox on a RaspberryPi 3 Model B+ and a BrewPi Spark version 1.0 revision C.

I followed the instructions on https://github.com/BrewBlox/brewblox-documentation/blob/master/user/startup.md

During the command brewblox-ctl flash I run in an error No compatible USB devices found. The DFU mode seems to be activated successfully (at least the spark beeps during the command).

The complete output of the command:
Please press ENTER when your Spark is connected over USB^[[3
The following shell commands will be used:

 docker-compose down
 docker pull brewblox/firmware-flasher:rpi-stable
 docker run -it --rm --privileged brewblox/firmware-flasher:rpi-stable trigger-dfu
 docker run -it --rm --privileged brewblox/firmware-flasher:rpi-stable flash

Press ENTER to continue, Ctrl+C to cancel

Running command:
 docker-compose down

Removing network brewblox_default
WARNING: Network brewblox_default not found.

Running command:
 docker pull brewblox/firmware-flasher:rpi-stable

rpi-stable: Pulling from brewblox/firmware-flasher
Digest: sha256:b9c9af1fe13aac133cd5414dec28413e7717e53ca7d1a230aa0c4880ba3b7d5c
Status: Image is up to date for brewblox/firmware-flasher:rpi-stable

Running command:
 docker run -it --rm --privileged brewblox/firmware-flasher:rpi-stable trigger-dfu

Running command:
 docker run -it --rm --privileged brewblox/firmware-flasher:rpi-stable flash

No compatible USB devices found

Any ideas? Where can I find logs with further information?

Best regards,

The new stack doesn’t support the spark core, only the photon and the P1.

A BrewPi Spark 1 can be upgraded by replacing the spark core with a photon.

1 Like

Oh. I missed that information. Thx.
I’ll shop for a photon core. Case closed :slight_smile:

Hi, I just confirm that the update worked like a charm after I replaced the Spark with a Photon core for ~20 bucks. Thx again for the instant help with this.

Re-visiting this thread… Same problem, I think… @elco please sanity-check this for me?

I have a BrewPi Spark v2 with a P0 that was flashed for brewblox a few months ago. I just came back around to rebuild my rPi and discovered that my brewpi’s spark USB connector broke internally. I replaced it with another P0 that I have for dev purposes, and can’t flash it with brewblox-ctl.

I did reset my dev photon P0 via the particle app and reconfig it for my network with the baseline tinker firmware to verify it’s functional - now breathing cyan. Plugged into USB on brewblox rpi again and brewblox-ctl flash errors just the same.

Was the change to require a P1 or Photon (but not a Photon P0) done in a very recent update?
Is there a thread that discusses why (just curious)?


I have never heard of a photon P0.
The P0 is the module that’s soldered onto each photon. They sell it separately to integrate into products. The P1 is a P0 including an integrated WiFi antenna. The Spark 3 has a P1 inside, the Spark 2 had a photon.

Check whether the pi sees the photon with lsusb.
It is most likely the usb cable that is causing the problem.

@elco It wasn’t the cable. Evidently there needed to be a udev rules file to allow non-root USB access. The particle CLI “device doctor” mode couldn’t even detect the photon in DFU mode and prompted to fix the udev rules automatically.

Had to work through a slight hack to get docker working on Raspbian buster - need to use the nightly docker build to get a working/patched version of containerd. See issue 545 for that…

After completing brewblox-ctl setup w/ a working docker containerd, and getting the udev permissions set up, here’s the difference in what I see when listing the devices:

cd ~/brewblox && docker run --rm --privileged brewblox/brewblox-devcon-spark:rpi-edge --list-devices

2019/06/28 21:47:11 INFO     brewblox_service.service        Creating [spark] application
2019/06/28 21:47:11 INFO     __main__                        Listing connected devices: 
2019/06/28 21:47:11 INFO     __main__                        >> /dev/ttyAMA0 | ttyAMA0 | 3f201000.serial

cd ~/brewblox && docker run --rm --privileged brewblox/brewblox-devcon-spark:rpi-edge --list-devices

2019/08/05 20:40:31 INFO     brewblox_service.service        Creating [spark] application
2019/08/05 20:40:31 INFO     __main__                        Listing connected devices: 
2019/08/05 20:40:31 INFO     __main__                        >> /dev/ttyACM0 | Photon - Photon Serial | USB VID:PID=2B04:C006 SER=23002a000a47353138383138 LOCATION=1-1.5:1.0
2019/08/05 20:40:31 INFO     __main__                        >> /dev/ttyAMA0 | ttyAMA0 | 3f201000.serial

The udev permissions should probably be something called out in the instructions or troubleshooting section of the brewblox install docs perhaps? (or did I miss it?)

pi@rpi2:~ $ bash <( curl -sL https://particle.io/install-cli )

pi@rpi2:~ $ particle device doctor
The Device Doctor will put your device back into a healthy state
It will:
  - Upgrade system firmware
  - Flash the default Tinker app
  - Reset the device and server keys
  - Clear the Wi-Fi settings
You are missing the permissions to access USB devices without root.
? Would you like to install a udev rules file to get access? Yes
sudo cp "/home/pi/.particle/node_modules/particle-cli/dist/cmd/../../assets/50-particle.rules" "/etc/udev/rules.d/50-particle.rules"
udev rules installed.
Physically unplug and reconnect your Particle devices and try again.
The Doctor didn't complete sucesfully. Missing permissions to use DFU
> Please visit our community forums for help with this error:

pi@rpi2:~ $ cat  /etc/udev/rules.d/50-particle.rules

# UDEV Rules for Particle boards
# This will allow reflashing with DFU-util without using sudo
# This file must be placed at:
# /etc/udev/rules.d/50-particle.rules    (preferred location)
# To install, type this command in a terminal:
#   sudo cp 50-particle.rules /etc/udev/rules.d/50-particle.rules
# After this file is installed, physically unplug and reconnect the
# Particle device.
# Core
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="607[df]", GROUP="plugdev", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
# Photon/P1/Electron
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2b04", ATTRS{idProduct}=="[cd]00[68a]", GROUP="plugdev", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
# Argon/Boron/Xenon
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2b04", ATTRS{idProduct}=="[cd]00[cde]", GROUP="plugdev", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
# Argon/Boron/Xenon (SoM)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2b04", ATTRS{idProduct}=="[cd]01[678]", GROUP="plugdev", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
# Particle Programmer Shield v1.0
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", GROUP="plugdev", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
# Particle Debugger
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0d28", ATTRS{idProduct}=="0204", GROUP="plugdev", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
# If you share your linux system with other users, or just don't like the
# idea of write permission for everybody, you can replace MODE:="0666" with
# OWNER:="yourusername" to create the device owned by you, or with
# GROUP:="somegroupname" and mange access using standard unix groups.
# If using USB Serial you get a new device each time (Ubuntu >9.10)
# eg: /dev/ttyACM0, ttyACM1, ttyACM2, ttyACM3, ttyACM4, etc
#    apt-get remove --purge modemmanager     (reboot may be necessary)
# Edited by Julien Vanier
# This file is derived from the Teensy UDEV rules
# http://www.pjrc.com/teensy/49-teensy.rules

We run the Particle CLI in a docker container (brewblox/firmware-flasher). To get USB access we use the --privileged flag, and either add the user to the docker group, or run the command with sudo.
In that configuration, any complaints about udev rules are usually caused by faulty USB cables.

If you restart the device doctor after copying the udev rules, does it give the same error?

If you run lsusb, whch devices are reported? Known devices are:

  • 2b04:c006: Photon, normal
  • 2b04:d006: Photon, DFU mode
  • 2b04:c008: P1, normal
  • 2b04:d008: P1, DFU mode

@Bob_Steers, I did restart device doctor… and it successfully connected and ran me through reseting everything and flashing the base tinker image. I could then see the photon in my particle cloud account. (I have other particles as well.)


pi@rpi2:~/brewblox$ lsusb
Bus 001 Device 004: ID 2b04:c006
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

And this time, flashing the firmware worked!

pi@rpi2:~/brewblox$ brewblox-ctl flash
Please press ENTER when your Spark is connected over USB
The following shell commands will be used: 

	 docker-compose down
	 docker pull brewblox/firmware-flasher:rpi-edge
	 docker run -it --rm --privileged brewblox/firmware-flasher:rpi-edge trigger-dfu
	 docker run -it --rm --privileged brewblox/firmware-flasher:rpi-edge flash

Press ENTER to continue, Ctrl+C to cancel

Running command: 
	 docker-compose down 

Removing network brewblox_default
WARNING: Network brewblox_default not found.

Running command: 
	 docker pull brewblox/firmware-flasher:rpi-edge 

rpi-edge: Pulling from brewblox/firmware-flasher
9d34ec1d9f3e: Pull complete 
4cff8910277f: Pull complete 
b2d77c0c5e2a: Pull complete 
12595409ac3e: Pull complete 
b5fa537367ce: Pull complete 
e8a1a66888f7: Pull complete 
bfb989819767: Pull complete 
f5fd345c5bd5: Pull complete 
bc3f44c02403: Pull complete 
fe052b4fb896: Pull complete 
b288d197d49c: Pull complete 
c9d26a18e085: Pull complete 
Digest: sha256:d21ad9db2451e2c5492f24e7dadf79696447036bcf7e231dd72b8404f0f4edcb
Status: Downloaded newer image for brewblox/firmware-flasher:rpi-edge

Running command: 
	 docker run -it --rm --privileged brewblox/firmware-flasher:rpi-edge trigger-dfu 

Running command: 
	 docker run -it --rm --privileged brewblox/firmware-flasher:rpi-edge flash 

Flashing Photon...
Flashing System 1 file...

Flash success!
Flashing System 2 file...

Flash success!
Flashing Firmware file...

Flash success!