The release of the Raspberry Pi 3B+ about a month ago saw the inclusion of a new LAN7515 Gigabit Ethernet device which differs from the network device in all previous Raspberry Pi models.

A new driver has now been committed which provides support for this network device and allows the full feature set of Ultibo core to be utilized on a Raspberry Pi 3B+.

Like the SMC91X driver for the QEMU Versatile PB platform this driver implements a new buffer model at the transmit and receive layer in order to reduce the number of data copies and improve overall throughput. This driver is also the first to include support for network link state detection which will allow the transport layer to dynamically reconfigure the adapter when the link status changes, as yet this is not fully implemented in the network stack because the other drivers will also need to be updated but you may notice log entries for link status changes when using the new driver.

Note that the Raspberry Pi 3B+ also includes two 4 port USB 2.0 hubs as part of the LAN7515 device, these are detected by the existing USB hub driver and no changes are required to support them.

For details of how to apply the latest source to your Ultibo core installation and rebuild your run time library see the wiki page Building from Source or watch the Building the RTL video on YouTube.

EDIT: To use the new driver just include either the RaspberryPi2 or RaspberryPi3 units in your application, or include the LAN78XX unit by itself.

The USB subsystem shows it when it enumerates the bus and you can see it in the USB page of WebStatus, on a 3B+ there are 3 hubs listed instead of the normal 2 (remember that USB0 is always the root hub).

We haven't done any exploration of which way the hubs are wired up but Ultibo knows all of that information, you can use USBDeviceEnumerate() and then USBDeviceGetHub() and USBDeviceGetPort() to figure out which ports appear on which connectors.