Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 5 Aug 2018 21:21:22 -0700
From:      John Kennedy <warlock@phouka1.phouka.net>
To:        freebsd-arm@freebsd.org
Subject:   usb-only rpi 3b+ (+UART foo)
Message-ID:  <20180806042122.GD30738@phouka1.phouka.net>

next in thread | raw e-mail | index | archive | help
I'm trying to boot using only USB (no SD card).  Seems like it should be easy.

Booted up via my SD card with the USB drive attached, I can see and use it easily:

	# usbconfig
	ugen0.1: <DWCOTG OTG Root HUB> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)
	ugen0.2: <vendor 0x0424 product 0x2514> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (2mA)
	ugen0.3: <vendor 0x0424 product 0x2514> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (2mA)
	ugen0.4: <vendor 0x0424 product 0x7800> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA)
	ugen0.5: <Logitech USB Receiver> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (98mA)
-->	ugen0.6: <Samsung Portable SSD T5> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)

The RPI doesn't get the green boot-light or the rainbow screen.  So low-level
stuff is obviously AWOL.  I've put program_usb_boot_mode=1 into the config.txt,
but can't verify it with vcgencmd since that won't compile on arm64 (I haven't
tried burning raspbian and seeing if they have a working port to verify).

As a real disk, it's power light comes up delayed.  It seems like it should be
lit before 5-seconds, but I don't know if that is enough for the RPI to try
and enumerate it.  Currently I'm trying to divide and conquer by putting the
MSDOS boot partition on an SD card and then boot USB off of that, or at least
try to figure out what is wrong from there.

So my USB console cable finally arrived and I plugged it in:

	kernel: ugen0.4: <Silicon Labs CP2102 USB to UART Bridge Controller> at usbus0
	kernel: uslcom0 on uhub0
	kernel: uslcom0: <CP2102 USB to UART Bridge Controller> on usbus0

Connecting via this from my amd64 FreeBSD box:

	screen /dev/cuaU0 115200

It's dropping some characters, so hopefully I won't add typos:

    [usb reset]
	U-Boot> usb reset
	resetting USB...
	USB0:   scanning bus 0 for devices... 5 USB Device(s) found
	       scanning usb for storage devices... 0 Storage Device(s) found

	U-Boot> usb start

If anybody has some suggestions on how to get that cable to not murder the
serial output (from the RPI), that would be helpful.  The input (to RPI) seems
totally fine looking at the HDMI console output, but what comes back is very
spotty (lots of dropped characters, don't see mangling).  In any case:

Murdered info from usb info:
	1: Hub (u-boot root hub)
	2: Hub (vendor 0x0424, product 0x2514)
	3: Hub (vendor 0x0424, product 0x2514)
	4: Human interface (boot keyboard, boot mouse, should be the logitech)
	5: vendor specific (vendor 0x0424, product 0x7800)

So u-boot isn't even seeing my Samsung drive?

    [version]
	aarch64-none-elf-gcc (FreeBSD Ports Collection for aarch64noneelf) 6.4.0
	GNU ld (GNU Binutils) 2.30

That (and it's supporting partition of files) should be from:
	FreeBSD-12.0-CURRENT-arm64-aarch64-RPI3-20180726-r336739.img

    [cat /boot/msdos/config.txt]
	arm_control=0x200
	dtparam=audio=on,i2c_arm=on,spi=on
	dtoverlay=mmc
	dtoverlay=pwm
	dtoverlay=pi3-disable-bt
	device_tree_address=0x4000
	kernel=u-boot.bin

	program_usb_boot_mode=1
	enable_uart=1



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20180806042122.GD30738>