sekigon-gonnoc / qmk_firmware

keyboard controller firmware for Atmel AVR and ARM USB families
http://qmk.fm
GNU General Public License v2.0
202 stars 82 forks source link

Pico-PIO-USB split questions. #48

Open hanetzer opened 2 years ago

hanetzer commented 2 years ago

Heyo, ran into your work on the discord, had a few questions about your work.

  1. which gpio pins are turned into USB using this?
  2. if you use the usb pio for split, are both devices visible to the host computer (master and slave halves)?
  3. if the answer to 2 is yes, do you think it would be possible to flash downstream devices while plugged in to upstream ones (instead of directly attached to the computer)

Thank you for your time, this looks very interesting.

sekigon-gonnoc commented 2 years ago
  1. Pin 0 is D+, and pin 1 is D-. You can change this by editing config https://github.com/sekigon-gonnoc/qmk_firmware/blob/rp2040/keyboards/pico_pico_usb/simple_split/simple_split.c#L35
  2. No
hanetzer commented 2 years ago

Ok, cool, and some more questions:

  1. could one instead plug a non-qmk/rp2040 device into the pio-usb port (say for example, a bluetooth dongle or wireless mouse dongle) and have it work through the pico-pio-usb keyboard? Either directly thru the upstream device or down the line computer->keyboard1->keyboard2->dongle?
  2. I'm assuming that if I flash this on a bare rpi pico the connection to the second one would be via the usb micro port on it? so pico1[GP0,GP1]->pico2[usb-micro]
  3. why do you suggest 22ohm resistors for the pio-usb when the hardware usb needs 27ohm resistors according to the datasheet? different physical/electrical properties?
sekigon-gonnoc commented 2 years ago
  1. Normal HID USB/Mouse probably recognized. For other devices, you have to write proper driver for those.
  2. Yes
  3. I selected them from my inventory. I'm assuming their properties are same
fxliang commented 1 year ago

is it possible to connect two pico like bellow then keyboard which communicating via serial can also work in usb mode(connecting with usb type-c wire) it may require switching between host and device with SPLIT_USB_DETECT ? pico1[GP0] <----> pico2[GP1] pico1[GP1] <----> pico2[GP0]