Date: Thu, 28 Mar 2019 17:18:41 +0100 From: Per Hedeland <per@hedeland.org> To: Hans Petter Selasky <hps@selasky.org>, freebsd-arm@freebsd.org Cc: freebsd-questions@freebsd.org Subject: Re: How to force host mode for RPi Zero USB? Message-ID: <7f6d9c20-42b0-1f47-dc49-2394c3da7cab@hedeland.org> In-Reply-To: <cdc665f0-ed2b-a8d8-3538-f4014b057920@selasky.org> References: <222dd329-e0d5-31ad-512a-898040c44c1c@hedeland.org> <cdc665f0-ed2b-a8d8-3538-f4014b057920@selasky.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2019-03-28 15:43, Hans Petter Selasky wrote: > On 3/28/19 1:50 PM, Per Hedeland wrote: >> Hi, >> >> I have a 4-port USB hub that attaches directly to the RPi Zero board: >> http://www.uugear.com/product/zero4u/ . This seems to work fine on >> FreeBSD - as long as I have an OTG adapter/cable connected to the then >> otherwise unused data port on the Zero, which is a quite annoying >> requirement IMHO. Without it, the FreeBSD USB stack uses device mode >> (as described in the handbook), and (of course) doesn't even see the >> add-on hub. >> >> According to the hub documentation >> (http://www.uugear.com/doc/Zero4U_UserManual.pdf), "Linux" uses host >> mode by default, and requries a DT overlay to use device mode. The >> FreeBSD automatic switching is arguably more elegant, but is IMHO >> inferior in a case like this (it's of course also impossible to make >> any USB devices work when connected to the Zero data port *without* an >> OTG adapter/cable). >> >> So, as $SUBJECT - surely there is a way to force host mode? >> > > Hi, > > You can add a "dr_mode" property to the DWC OTG driver instance and set it to "host". Uh.... - OK, so I looked at the dwc2-overlay.dts that Linux uses, stripped it down to what I guessed was the bare minimum, changed its dr_mode = "otg" to dr_mode = "host": -------------------------------- /dts-v1/; /plugin/; /{ compatible = "brcm,bcm2708"; fragment@0 { target = <&usb>; __overlay__ { dr_mode = "host"; }; }; }; -------------------------------- - compiled it, put it in /boot/msdos/overlays, and added a dtoverlay= line for it in /boot/msdos/config.txt - and it worked!:-) Thanks a lot! Um, I don't suppose there is a simpler way, like adding a line to /boot/loader.conf? --Per
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7f6d9c20-42b0-1f47-dc49-2394c3da7cab>