- C 97.9%
- CMake 1.5%
- Shell 0.4%
- Makefile 0.2%
| code | ||
| docs | ||
| hardware/whiskers-kicad | ||
| media | ||
| .gitmodules | ||
| LICENSE.md | ||
| README.md | ||
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.
DISCLAIMER
This device, whether as a prototype or finished device, including also it's firmware is for RESEARCH and EDUCATIONAL PURPOSES ONLY. No colaborator, designer, or manufacturer involved with this project's production, design, or logistics has any intention, whether explicit or implicit, to use this device beyond research and testing. This project is not intended to be used for crime and is to be designed and used in good faith. Any person or entity using this project's code, design, or any physically device to do any level of crime is not affiliated with V.L. Labs, this site or sister sites, or anyone also contributing to this project. The colaborators, designers, and manufacturers of this device DO NOT CONSPIRE OR DESIRE TO COMMIT ANY LEVEL OF CRIME and abide by the Computer Fraud and Abuse Act (Title 18 U.S. Code 1030).
This device, including both hardware designs and code, are not designed with the intent to sell or to be profited off of. Any individual following the license described in LICENSE.md is permitted to use any resources in this repository (whiskers) on this site (git.vllabs.net).
ANY entity contributing to or using this project must agree to the above disclaimer and the license described in LICENSE.md
Rev 1.0 - 4/29/2026 written by designer & contributor Zane Maples
Media
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 make rp2350 which will setup all rp2350 code and dependencies. The output .uf2 file will be in rp2350_build
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.
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.
Code Documentation
All official/formal docs are generated in docs/ via doxygen. The current (code version 0.2.0) docs can be found here.
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
- Find documentation/figure out a way for OS fingerprinting via USB [1]
- Write down list of things to take "inspiration" from the HAK5 rubber ducky [2]