Hacker News new | past | comments | ask | show | jobs | submit login
Raspberry Pi 4 as a USB-C peripheral (hardill.me.uk)
237 points by hardillb on Nov 2, 2019 | hide | past | favorite | 47 comments



You can also do a USB client on a $1.50 AVR chip: https://www.obdev.at/products/vusb/index.html

Source: Compiled and connected a mouse/keyboard firmware running on an ATtiny861a using internal RC oscillator.


Why would you do that though when there are a gazillion Cortex-M chips available that support hardware USB? Fast USB and you don't have to use AVR.

Hell, Atmel even sells Cortex-M chips with High Speed USB-2 support (reasonably hard to find; most are only Full Speed).


Tool Familiarity?

I've been doing embedded systems large and small for decades but before this year, never put anything with an ARM into production.

AVRs are still my go to for most things because I know them well and have all the tooling ready to go.


Full ATmega32U4 board is 2.50 and doesn't need any hacks to work.


Could you provide a link to that $2.50 price?


Aliexpress. Amazon. eBay.


Hmm, quick Amazon search I'm seeing $5-6, more if you're outside USA. https://www.amazon.com/s?k=ATmega32U4


It varies and you can't always find the same price. The last price I paid for Nanos on Amazon was 5 for $17. Aliexpress is cheaper than that (that's where they're usually under $3), but I can't always wait that long.

My bad: forgot we were talking 32U4. Here's a link for $2.70: https://www.aliexpress.com/item/32846843498.html?src=google&...


Thanks!


  [R]ecent update to the Raspberry Pi 4 bootloader
  (...) enables data over the USB-C port
Am I reading this right that RPi4 has five usable USB ports, i.e. unlike earlier models, port on bottom left of the board can carry data along with power? This is awesome!


USB-C includes a USB-2 management channel in addition to the high-bandwidth lanes. It is used for things like advanced power delivery negotiation. On the Raspberry Pi 4, the USB-C port has no high-bandwidth lanes, and it only uses passive power negotiation.


> USB-C includes a USB-2 management channel in addition to the high-bandwidth lanes. It is used for things like advanced power delivery negotiation.

No, all the power delivery negotiation in USB-C, both the basic one using only passive resistor values and the advanced one using the USB-PD protocol, is through the configuration channel pins, which is a separate pair of pins completely independent from the USB 2.0 pins in the middle. (The configuration channel is implemented incorrectly on the Raspberry Pi 4, however; it shorts together the pins, while they should be separate, so it fails with advanced cables which use both pins; and when powered through a source other than the USB-C connector, it incorrectly sources 5V to the USB-C port even when it shouldn't.)


This seems to be in opposition to the blog post. In addition, according to the schematic there's USB-2 over that USB-C port:

https://www.raspberrypi.org/documentation/hardware/raspberry...


Yep


Yay, that feature was previously only available on the Pi Zero. Does anyone know if this will work on older computers, using a USB A-to-C cable?


Yep, should work fine with a USB-A to USB-C cable as well


Also in the PI 3A, but needs a weird cable.


Site is getting a bit slow - mirror here: http://archive.is/3bp5L


cloudflare (1.1.1.1) is resolving archive.is to 127.0.0.5 ??


Archive.is doesn't like that cloudflare doesn't give them information about the subnet the query came from, so they give a bad reply to cloudflare. (https://news.ycombinator.com/item?id=19828317)


Fyi: USB-c in the rpi 4 is not standards compliant.

A new revision is underway, a fix is just using dumb cables.


Using dumb cables avoids one of the issues (configuration channel pins shorted together), but not the other one (sourcing power even when the configuration channel says it shouldn't source power).

That is, the workaround is both "use only dumb cables (which use only one of the CC pins)" and "never connect to a USB-C device which might source power while the rpi is being powered by something other than the USB-C".


> "never connect to a USB-C device which might source power while the rpi is being powered by something other than the USB-C"

Wouldn't this actually apply to a lot of use-cases of the project in the linked blog?

The whole point is connecting the RPi as a peripheral of a laptop, i.e. a power-sourcing host. if you do that, you'll also likely be tempted to use an external power supply for the Pi as the USB's supply is limited. It's important to note that this will lead to problems.


Is there anything like this that can act as gadget devices for more than one host? (So I can plug it in to 4 different PCs or the like)


I fail to imagine a usw case for that. Could someone enlighten me?


... build a smart boot device that provides a bunch of different CD images for BIOSes that don't do USB boot well

... build a safe password keeper that looks like a HID device

... do something interesting with USB-based gamepads to map those to keyboard keys for playing old DOS games

... make a connected USB storage device that offers some sort of additional sync services for the data stored on it (maybe over wifi?)

... make a network adapter that also acts as a firewall, or possibly links to tor/vpn/etc

... Something something MIDI over USB


> ... make a connected USB storage device that offers some sort of additional sync services for the data stored on it (maybe over wifi?)

There used to be a KS funded case built around a Pi and an HDD that would act as an external storage when plugged to a USB port and would work as Kodi based media player once booted and connected to an HDMI port.

If anybody knows if this can be done DIY style with minimal cable mess I am all ear :).

edit: ah ! https://geekworm.com/blogs/raspberry-pi/how-to-add-extra-sto...


> ... build a smart boot device that provides a bunch of different CD images for BIOSes that don't do USB boot ...

There’s an Android app for that, it’s one of the biggest things I miss after switching to the iPhone.


That's awesome. Do you recall the name?



The last time i checked it needed gadget kernel driver support and root, a showstopper for me...

Apart from that, great concept: load your 5+ cd images onto your 64+ gb android and be done (win10, ubuntu, debian, grml, kali, bios update cd image, etc) and forget about your usb drive collection...


I thought modern android required the gadget driver anyway? I’m pretty I was able to use it without root but it was (supposedly) less reliable without it.


Once I didn't have any USB sticks handy and didn't know about DriveDroid, so I used Servers Ultimate to host a TFTP server so I could PXE boot the netboot.xzy image from my phone to my laptop then download+install Arch Linux.

https://play.google.com/store/apps/details?id=com.icecoldapp...


> build a smart boot device that provides a bunch of different CD images for BIOSes that don't do USB boot well

There are a few of those around.

http://isostick.com/

http://www.zalman.com/contents/products/view.html?no=212

http://iodd.kr/wordpress/product/iodd-2531/


Nice examples. I suppose you could hang a Raspberry Pi on your smartphone, and have say a Kali machine on it. Though you can also run Kali on Android.


> ... build a safe password keeper that looks like a HID device

Does anyone know if any such similar devices are already available? Whether based on an RPi or not?


So you can add GPIO to your computer with lots of preprocessing power.


Wow. What a good summary. Should be the heading. :-)


Say you are a mac user and want a portable Linux environment to play with that has GPIO? (That you can use on a plane)

You want to run a secure off line personal Certificate Authority (a Pi Zero would probably be enough and can work in the same way)

It can also be any other type of USB device, e.g. a HID device (keyboard/mouse/joystick) you can dream up loads of interesting things to do with this


I use a 3A+ for this. Works great, uses a lot less power, and is smaller.


The power draw is better with the new bootloader (lets the whole USB stack drop into low power mode)

Also this is USB-C native for all the mac book folk out there that hate to carry all those adapters


A debug port for an embedded device that looks like a UART and a MTP mount of the filesystem?


In the Nerves project (Elixir thing for embedded linux) it is used to be able to power, SSH to the device and push new firmware changes without needing to reimage the SD card. Already used that a lot with the zero and 3A.


Part time “HPC”. Lots of bandwidth in usbc and probably just enough compute to use it. Testbedding comes to mind.


Thanks for the Answers!


Literally converting it into a successful Mac accessory itself is a kickstarter gold!


wonder if this would be a much better hw solution for TeslaUSB...

https://github.com/cimryan/teslausb




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: