January 10, 2022

Orange Pi R1 Plus LTS (RK3328)

I just ordered 3 of these from AliExpress. The price was $27, but with shipping came to $31 each. This compares nicely to $37 for the H3 based 32 bit Orange Pi PC plus (with emmc).

As long as you only need the IO that fits onto the 13 IO pins, this could be great.
Really only 8 pins are useful (see below).

In a nutshell

First and best of all. This board has a reset button!

You get a 4 core A53 ARM (64 bit) along with 1G of RAM. You power it via USB-C. It has very few GPIO pins. For some unknown reason it has dual 1G ethernet. The second ethernet is via USB-3 to a RTL8153 chip. The main ethernet uses an external PHY.

There is also a 25VG128 NAND memory chip (16M)
Also a RK805 chip, which is power management.

LTS or no?

No! I am learning that whenever Orange Pi sticks "LTS" on a board it means that they are taking some cost cutting shortcut and not giving you something you are going to wish you had.

In this case they give you a more or less undocumented Motorcomm YT8531C PHY chip in lieu of the well known and virtually standard 8211E phy chip.

Unfortunately, I ordered the "LTS" version. Typically LTS means "long time support", but in the case of Orange Pi boards nobody knows what it means other than they are making some changes to deliver you something at a lower price. Be alert and cautious!

With the LTS version of the R1 Plus, you get a single memory chip instead of two (which is fine I suppose), but you get the YT8531 ethernet PHY instead of the 8211E. If I had it to do over, I would get the non-LTS just because documentation on the 8211 is readily available.

NetBSD

NetBSD supports the "ROCK64" board with the RK3328. I am betting on issues with the ethernet phy if you try to run this on the R1 plus. Here is the Github (an entire NetBSD fork) for the guy who is working on the port -- The RockPro64 uses the RK3399 and is $135 on AliExpress.

Note however that NetBSD does know about the RTL8153, so even if the YT8153 was annoying or intractable, or otherwise obnoxious, a person could just say the heck with it and set things up to use the 8153.

./dev/usb/if_ure.c:/* RealTek RTL8152/RTL8153 10/100/Gigabit USB Ethernet device */

Pi style Ethernet

I have always despised the Raspberry Pi units because of the way they designed the ethernet subsystem. Prior to the Raspberry Pi 4, then had an internal connection (via USB 2.0) to some kind of USB to ethernet chip Note that the LAN7515 could/can do gigabit ethernet, but is bottlenecked to about 300 Mbit due to the ridiculous "connect via USB" scheme used on the Raspberry Pi.

Why am I mentioning this here? Because the R1+ uses a USB connection to the second ethernet, and I thought perhaps that if the Raspberry Pi had used the RTL8153 (but it doesn't) that might be relevant here.

Things are better for the R1+ in at least two ways. First of all the USB to ethernet connection is for the second ethernet, which we will probably forever ignore. Second is that they used USB 3, which will not be a bottleneck, even at gigabit speeds.

That darn YT8531 driver

Searching the NetBSD source tree for "8531" turns up a couple of interesting things:

/external/gpl2/dts/dist/include/dt-bindings/net/mscc-phy-vsc8531.h: * Device Tree constants for Microsemi VSC8531 PHY
/dev/mii/miidevs.h:#define	MII_MODEL_xxVITESSE_VSC8531	0x0017		/* Vitesse VSC8531 10/100/1000TX PHY */
The VSC8531 is now a Microchip part with an 87 page datasheet. It is hard to believe this part is not in some way related to the YT8531 PHY, but who knows.
Linux clearly views them as entirely different items ---

Searching the latest Linux source tree is even more interesting. It turns up not just the above, but a specific YT8531 driver!

./drivers/net/phy/motorcomm.c: * Motorcomm 8511/8521/8531S PHY driver.
./drivers/net/phy/motorcomm.c:#define PHY_ID_YT8531S		0x4F51E91A
./drivers/net/phy/motorcomm.c:	{ PHY_ID_MATCH_EXACT(PHY_ID_YT8531S) },
./drivers/net/phy/mscc/mscc_main.c:	   VSC8531_LINK_100_ACTIVITY, VSC8531_LINK_ACTIVITY,
./drivers/net/phy/mscc/mscc.h:#define PHY_ID_VSC8531
./Documentation/devicetree/bindings/net/mscc-phy-vsc8531.txt
./tags:PHY_ID_VSC8531	drivers/net/phy/mscc/mscc.h	/^#define PHY_ID_VSC8531	/;"	d
./tags:PHY_ID_YT8531S	drivers/net/phy/motorcomm.c	/^#define PHY_ID_YT8531S	/;"	d	file:

Have any comments? Questions? Drop me a line!

Tom's electronics pages / tom@mmto.org