ataradov / usb-sniffer-lite Goto Github PK
View Code? Open in Web Editor NEWA simple USB sniffer based on Raspberry Pi RP2040
License: BSD 3-Clause "New" or "Revised" License
A simple USB sniffer based on Raspberry Pi RP2040
License: BSD 3-Clause "New" or "Revised" License
Hello
Thanks for your interesting design.
I made the circuit and I saw its menu with the Putty terminal program and the LED was blinking and I used a cool disk for testing, but there was a problem.
When I disconnect one of the wires connected to GPIO 10 or GPIO 11 from the pico board, Cool Disk works and is recognized by the computer.
But when I connect both the D+ (Green) and D- (White) wires to the board, the connection between the Cool Disk and the computer is disconnected.
Please advise.
Thanks
So I am trying to sniff the communication between a Nintendo Switch and a Pokken Tournament DX controller and am just seeing it spew errors. The controller is working fine on the switch and I have sniffed other controllers hooked up to the switch with no problems, but I am stumped as to why this controller is having issues. I have attached a pretty typical capture of the controller. Any advice would be appreciated.
teraterm.log
hi, i'm trying to use your code. my question is what sort of SDK or toolchain can compile your code?
i tried to compile your code by official SDK that raspbery has published for pico boards, but it seems that sdk has been designed to work
with pico/stdlib.h not your rp2040.h library.
the linker script sets the CRC as 0xcccccccc
- was there a tool you used to modify the boot section to be accepted by the boot loader?
SECTIONS
{
.boot : ALIGN(4)
{
KEEP(*(.boot.entry))
*(.boot*)
. = 256-4;
LONG(0xcccccccc) /* CRC */
} > boot
Hello, I keep getting the following error when I try to build the project as is. I have made no changes to any of the source or linker files yet.
"/usb-sniffer-lite-main/firmware/linker/rp2040.ld:21 cannot move location counter backwards (from 000000001000014c to 00000000100000fc)"
I have read up a bit and this hints at an application that is too large(?) to fit in memory. I cannot figure out why though. Any help here would be greatly appreciated. I am also unable to understand the purpose of linking to the address 0x10000000. Could you explain that as well?
Thanks.
Hi,
this set of udev rules does:
If the user is member of group plugdev, there is no need for sudo.
/dev/ttyACMx is volatile and the x can change from boot to boot. The symlink stays constant.
(You could also use the /dev/serial/by-id/xxxxxx, but that is not too easy to remember.
The Modem Manager tries to talk to ttyACMx devices for about 20 seconds after plugin. That can disturb communication.
Remove the .txt from the name and copy to /etc&udev/rules.d.
Feel free to add it to the repo.
# CDC-ACM interface for USB Sniffer
# Create symlinks for CDC-ACM
# Put device into group plugdev
# Ensure the ModemManager does not touch our device
ATTRS{idVendor}=="6666", SUBSYSTEM=="tty", SYMLINK+="usbsniffer", MODE="660", GROUP="plugdev"
ATTRS{idVendor}=="6666", SUBSYSTEM=="tty", \
ENV{ID_MM_PORT_IGNORE}="1", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_CANDIDATE}="0"
Hi,
Very cool this project with RP2040, it would be interesting to add other protocols.
As the Saleae analyzer also has an interface application for Windows, Linux and MAC, maybe it could be interesting to choose to add protocols not supported by Saleae to the RP2040.
Here is a list of protocols that Saleae's logic analyzer supports:
The Saleae Logic software includes the following protocol analyzers:
- 1-Wire
- Asynchronous Serial
- Atmel SWI (Single Wire Interface)
- BISS-C
- CAN (Controller Area Network)
- DMX512
- HD44780 Parallel LCD
- HDLC (High-Level Data Link Control)
- HDMI-CEC
- I2C
- I2S Audio / PCM
- I3C (see section below)
- JTAG
- LIN (Local Interconnect Network)
- MDIO (Management Data Input/Output)
- MIDI
- Manchester (Differential, Bi-Phase Space, and Bi-Phase Mark)
- Modbus RTU & ASCII
- PS2 Keyboard & Mouse
- SMBus (includes PMBus and Smart Battery)
- SPI (Serial Peripheral Interface)
- SWD (ARM Serial Wire Debug)
- Synchronous Parallel
- USB Low Speed and Full Speed
- I3C Protocol Support
https://support.saleae.com/protocol-analyzers/supported-protocols
Hi,
I have to say, this is really handy tool for USB FS debugging!
It already helped me to analyze some issues and improve bandwidth of device I am working on.
Now, I am trying to capture high load conditions. Unfortunately, I get:
Capture started
Capture stopped
Synchronization error. Check your speed setting.
I read though #4 and understood, that synchronization is problematic under load.
In my case, I have to open connection and then provide some data to load the bus. When I start capture and then open connection, packet buffer fills up before I manage to push some data.
Using trigger does not help, because it synchronizes on trigger.
Would it be possible to synchronize on start (s) and stay synced until capture is triggered?
Trigger input would serve only as a trigger for capture (storing into memory)
I'm not quite sure how to use UART0 in your "baremetal development environment." I don't want to make a mess, haha. Could you send me a small proof of concept to print some debug information at 115200 on the USB sniffer?
this dont works
static void uart_init(uint32_t baud)
{
RESETS_CLR->RESET = RESETS_RESET_uart0_Msk;
while (0 == RESETS->RESET_DONE_b.uart0);
baud = (F_PER * 4) / baud;
UART0->UARTIBRD = baud / 64;
UART0->UARTFBRD = baud % 64;
UART0->UARTLCR_H = (3/*8 bits*/ << UART0_UARTLCR_H_WLEN_Pos) | UART0_UARTLCR_H_FEN_Msk;
UART0->UARTCR = UART0_UARTCR_UARTEN_Msk | UART0_UARTCR_RXE_Msk | UART0_UARTCR_TXE_Msk;
HAL_GPIO_UART_TX_init();
HAL_GPIO_UART_RX_init();
}
awesome project @ataradov
I need to use UART+ VCP
Hi Ataradov,
I installed the UF2 and made me a primitive cable.
Can get the menu in a terminal screen, but i can't get it to capture any data.
Both USB connectors are connected to the same bus.
And i do not understand the function of the start key, can you explain this to me?
Kind regards,
Willem Ouwerkerk
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.