RP2350 Bad USB tool with SD card support for script storage and as a mass storage device. For educational / research purposes only.
  • CMake 58.7%
  • Shell 27.6%
  • C 13.7%
Find a file
2026-04-12 14:52:40 +00:00
code init 2026-03-05 11:05:01 -05:00
hardware/whiskers-kicad hardware v1.0 push 2026-04-12 10:26:26 -04:00
.gitmodules init 2026-03-05 11:05:01 -05:00
LICENSE init 2026-03-05 11:05:01 -05:00
README.md readme fix and verify commits 2026-04-12 14:52:40 +00:00

whiskers

whiskers is a bad USB tool based on the RP2350 with SD card support for custom scripts, with a dual use as a USB mass storage device.

Compilation

To compile the RP2350 code you will need an arm cross compiler (gcc-arm-none-eabi or the newlib version: libnewlib-arm-none-eabi or arm-none-eabi-newlib). Then run the setup.sh script in the code directory to setup the pico-sdk and dependencies.

Note: the instructions above and below are for Linux (and similary BSD and MacOS). There are compilers and setups for Windows. For more information see the RPI Foundation's official docs.

Then to compile run make in the build/ directory. Since this project uses TinyUSB over the native USB controller, all serial output (ie. logging) will have to be done over UART. The board provides a 4 pin UART serial interface that you can solder headers too if needed. This will require a TTL/USB converter, these can be found cheaply online. Here's one I recommend.

Hardware Viewing/Editing

All the hardware files (schematics, PCB, production files, BOM, etc.) are all made and viewed through KiCad 10.0. All assembly files and BOMs are generated to be produced through JLC PCB's assembly service. This because they have competitive prices and easy access to parts and being easy to generates BOMs for them. There are a few imported footprints in the whiskers.pretty file alongside a matching symbols library. The only exception to that is the RP2350-A/B & RP2354-A/B symbols and footprints. These are imported seperately from this repo.

There is also a JLC PCB fabrication plugin used to generate the BOM and the pick and place positions file. This is available in the official plugin repository in KiCad.

This device uses the RP2354B. I would've rather used the smaller chip but they were out of stock/low avalability when I was designing the board and I am too impatient to wait for more. Since there is no current onboard flash chip in the design (or planned to be in the design) any revisions should use this chip or (requiring a redesign) the RP2354A. 2Mb of flash should be plenty for this project.

Current TODO

  • [1] Setup small baseplate with mini-library for SD card access and TinyUSB wrappers for convenience.
  • [2] Test and receive assembled boards
  • [3] Setup framework for project's main purpose.

Credits

  • Hardware Design: Zane
  • Software Design: Zane and soon my buddy Nathan