Notes on the Pi Book Pro laptop shell
The Pi Book Pro is a DisplayLink USB 3.0 1080p monitor, keyboard, and trackpad in a laptop shell for the Raspberry Pi 3 and 4.
It was originally the Sentio Superbook, an Android phone laptop shell, except Sentio went out of business. The Pi Book Pro is the leftover stock.
These notes are based on testing the Pi Book Pro with an early model 4GB Raspberry Pi 4B and a late model 8GB.
- Stock firmware cabling, power
- v0.7.0.3+ firmware cabling, power
- Display, overscan, bezel
- Trackpad
- Charging LEDs, battery
- Firmware update
- Firmware downgrade
- Raspberry Pi 4 USB 3 v. USB 2 performance
- Switching to HDMI, multiple displays
- Raspberry Pi Zero
- Other open questions
- Installing on Pi 3B/4, Raspberry Pi OS August 2020, DisplayLink 5.3.1
Stock firmware cabling, power

Using the stock firmware only, two short USB-C to USB A 3.0 cables can connect the Pi Book Pro to the Raspberry Pi 4 for both display and power. The USB-A port on the shell seems to provide reliable power to the RPi. A USB 3.0 port on the RPi connects to the USB-C port on the shell to provide display and input.
I don't believe there's any way to safely run the Pi Book Pro using a single USB-C to USB-C cable; the RPi4 doesn't power on when plugged into the shell's USB-C port. Once the Pi is booted, the Pi Book Pro may back-power it through the Pi's USB-A port, but this is not recommended (press Fn-p to disable USB-C power).
Assuming the raspberry-pi-power-supply-check.sh
script works on the RPi4 as expected, the Pi Book Pro USB-A port provides stable power, with no reported undervoltaging, when running on both an AC adapter and from battery:
32.0'C 1500 / 1500 MHz 0.8625V - ... 72.0'C 1500 / 1500 MHz 0.8625V -
When running a Pi 4 powered by the Pi Book Pro but using an HDMI display, I have not seen an undervoltage lightning bolt indicator. It's unclear whether one would show up on the Pi Book Pro screen.
At idle, the Pi Book Pro can power the RPi4 for at least six hours:
$ uptime 21:23:19 up 6:18, 3 users, load average: 0.00, 0.00, 0.00
The Pi Book Pro AC adapter is 12V 3A, center pin positive, 3.5mm by 1.35mm.
v0.7.0.3+ firmware cabling, power
I don't recommend you dig up old Sentio APKs and try to update the Pi Book Pro firmware. Using the v0.7.0.3 firmware or later, the power coming off the USB-A port cuts out at various points during the boot process, causing the Pi to reset. If you update firmware, you'll need to provide separate power to the Raspberry Pi.
Testing with a late model 8GB Raspberry Pi 4B, it also does not power on when plugged into the shell's USB-C port. There does not appear to be any way to run the Pi Book Pro using a single USB-C to USB-C cable.
Display, overscan, bezel

As described in various comments on the Sentio Fandom wiki, while the LCD is 1920x1080, the bezel covers up some pixels all around.
Various Stack Overflow answers suggest applying a transform using xrandr
, but this doesn't appear to work, making the display unresponsive when I try it.
This zero-point answer, however, did work for me. Instead of transforming the output, it creates a new display mode, which gets centered within the physical display. Because manufacturing tolerances may mean that some displays may have more or fewer pixels covered, you might still have to follow those steps to get something that maximizes your visible area, but here are a few to get you started.
First, open a Terminal window, and type:
$ sudo nano /usr/share/X11/xorg.conf.d/10-monitor.conf
to create a new 10-monitor.conf
file. In it, paste the following:
Section "Monitor" Identifier "DVI-I-1" # Warning: Aspect Ratio is not CVT standard. # 1800x1000 59.91 Hz (CVT) hsync: 62.19 kHz; pclk: 148.75 MHz Modeline "1800x1000_60.00" 148.75 1800 1912 2096 2392 1000 1003 1013 1038 -hsync +vsync # Warning: Aspect Ratio is not CVT standard. # 1904x1048 59.94 Hz (CVT) hsync: 65.15 kHz; pclk: 165.75 MHz Modeline "1904x1048_60.00" 165.75 1904 2024 2224 2544 1048 1051 1061 1087 -hsync +vsync # Warning: Aspect Ratio is not CVT standard. # 1864x1048 59.90 Hz (CVT) hsync: 65.11 kHz; pclk: 162.00 MHz Modeline "1864x1048_60.00" 162.00 1864 1984 2176 2488 1048 1051 1061 1087 -hsync +vsync Option "PreferredMode" "1904x1048_60.00" EndSection
CtrlO, Enter to save, then CtrlX to exit.
This sets up a new 1904x1048 screen resolution as the default, which cuts off 16 pixels left and right (8 on each side), and 32 pixels top and bottom (16 on each side). On my display, more pixels are covered up at the top than at the bottom, so this leaves a slight black border at the bottom of the screen.
The other two resolutions you can try are:
- 1864x1048, which is proportionately the same as 1920x1080, but will leave black bars on the left and right as well as the bottom; and
- 1800x1000, which is way smaller and will have black bars on all sides, but will definitely let you see the entire screen without cutting anything off, and then you can grow it from there.
If you find you have more or fewer pixels covered up and start playing with cvt
and xrandr
to find a better modeline, remember that while the height can be any value, the width has to be a multiple of 8 pixels, so you can only adjust 4 pixels left or right at a time.
Trackpad
Using the stock firmware, tap-to-click does not appear to be available.
❓I can't tell if it's a USB bus saturation thing (like the Razer Core would experience), or if it's a build quality thing, but using the stock firmware, sometimes the trackpad becomes real slow or even completely unresponsive. Haven't tested the updated firmware enough yet.
A separate mouse plugged into a USB 2.0 port on the RPi4 doesn't experience the same issues, but that doesn't help narrow it down any.
Using the v0.6.1.1+ firmware, tap-to-click appears to be available, and cannot be disabled. The device reports to libinput as a pointer or mouse. Things I tried:
- There's no tapping properties visible with
xinput list-props
- It doesn't respond to
Option "MaxTapTime" "0"
inxorg.conf.d
- Forcing it to be a touchpad with a new udev rule for libinput fails with "failed touchpad sanity checks" and disables the touchpad entirely.
- Disabling the pointer buttons using
xmodmap
works, but there doesn't appear to be a good way to then use the keyboard to click instead, whether withxmodmap
,xbindkeys
,xdotool
, mousekeys mode, or Openbox.
I haven't used it long enough to see if the unresponsiveness returns with the updated firmware.
Charging LEDs, battery
❓Similarly to this Reddit post and top comment, the charging LEDs don't seem to behave as described in the Superbook manual. It never gets to solid green, it's always either flashing or orange/red. The original manual says:
LED state | Indicates |
---|---|
Right light is off | Superbook is off |
Right light is solid green | Superbook has greater than 75% of its battery remaining |
Right light is solid yellow | Superbook has between 50-75% of its battery remaining |
Right light is solid orange | Superbook has between 25-50% of its battery remaining |
Right light is solid red | Superbook has less than 25% of its remaining battery |
Right light is flashing green and another color | Superbook is charging. The other color is the remaining battery life |
Right light is flashing red | Superbook is not charging and has less than 5% of its battery remaining |
With the v0.8.0.1 firmware, my LEDs now flash something similar to "SOS" as described in this unanswered November 2018 Reddit post and this related January 2019 comment.
At some point, the battery completely discharged, and refuses to recharge. The diagnostics flowchart suggests that the SOS message was a known firmware bug. However, the not-charging symptom suggests a "battery connection issue" requiring an RMA, which, uh, there's not really an option for, now. Tried a hard reset and left it charging overnight to no avail. Popped the bottom case open and the battery connector looks like it's just taped down to the mating connector on the motherboard, it peeled right off. I don't have any way to safely test whether the connections are good or if it just needed to be reseated, and it's dangerous to be unsure around lithium cells, so I pulled the battery out entirely. I will have to power it, like the Pi, from an external battery pack.
Firmware update
The Pi Book Pro appears to ship with whatever original factory firmware the Sentio Superbook originally shipped with. It's old enough that the standalone Linux updater doesn't report the device serial number or firmware versions and is unable to update it; presumably the Sentio Desktop Android app would have updated it at least once.
The Sentio Superbook Updater Android app is no longer available from the Google Play Store, but APKs can still be found on mirror sites.
- The original release was in September 2018.
- In October 2018, there was a v0.7.0.3 release.
- In January 2019 there was a v0.7.0.5 release reporting trackpad and stability improvements.
- In April 2019 there was a v0.8.0.1 firmware update with an entire new battery fw management.
- A week later in May 2019 there was a rollback to v0.7.0.3, with no reason specified.
After repeated attempts with an Android 8.x phone with USB-OTG (micro-USB), I was able to update the Pi Book Pro firmware to v0.8.0.1. It was recognized by the standalone Ubuntu updater as well.
Firmware downgrade
Follow the diagnostics flowchart to put the Pi Book Pro in DFU mode:
- With the Pi Book Pro on and powered, and no devices connected to it, hold down D, F, and U keys.
- Using a pin, press the reset button on the underside for five seconds while continuing to hold down the keys.
- Wait twenty (20) seconds before releasing the keys.
- Wait three (3) more minutes before plugging anything in.
This appears to reset the Pi Book Pro to an older firmware. I'm not 100% sure it's stock; the Android updater reports it as 0.6.1.1, and tap-to-click is available on the touch pad. But, it's old enough that the USB-A port reliably powers a Pi 4, and that's probably what matters.
I do not recommend upgrading firmware beyond stock.
Raspberry Pi 4 USB 3 v. USB 2 performance
Benchmarking Linux display driver performance was in rough shape in 2009 and doesn't appear to have gotten much better in the intervening decade. To try and determine the performance of the DisplayLink 3.0 display, I ran:
first on the HDMI output, then on the Pi Book Pro output using the USB 3.0 port, and finally again on a USB 2.0 port.
Test | HDMI | Pi Book Pro |
---|---|---|
vblank_mode=0 glxgears |
1154 FPS | 224 FPS |
GtkPerf (1000 runs) | 116.11s | 86.97s |
GeeXLab | ~220 FPS | ~50 FPS |
09-noise-animation-electric.xml |
~100 FPS | ~16 FPS |
43-smiley-tutorial.xml |
~60 FPS | ~14 FPS |
21-radial_blur.xml |
~14 FPS | ~4 FPS |
The USB 3.0 and USB 2.0 runs are not broken out separately because they performed identically! The USB bus does not appear to be the limiting factor for the DisplayLink performance. This potentially means if a Pi 4B with the USB-C power fix allows for the Pi Book Pro to boot the Pi with a single cable, performance shouldn't be impacted.
(A previously open question about the differences between Full KMS and Fake KMS has been struck, as Full KMS is not available on the Raspberry Pi 4 as of this writing.)
Here are the full runs:
HDMI
pi@rpi4superbook:~ $ vblank_mode=0 glxgears ATTENTION: default value of option vblank_mode overridden by environment. 5631 frames in 5.0 seconds = 1126.061 FPS 5776 frames in 5.0 seconds = 1155.067 FPS 5763 frames in 5.0 seconds = 1152.431 FPS 5775 frames in 5.0 seconds = 1154.885 FPS 5760 frames in 5.0 seconds = 1151.942 FPS 5778 frames in 5.0 seconds = 1155.562 FPS pi@rpi4superbook:~ $ gtkperf (gtkperf:937): Gtk-WARNING **: 00:34:00.150: GtkSpinButton: setting an adjustment with non-zero page size is deprecated (gtkperf:937): Gtk-WARNING **: 00:34:00.187: GtkSpinButton: setting an adjustment with non-zero page size is deprecated GtkPerf 0.40 - Starting testing: Sat Jul 4 00:34:08 2020 GtkEntry - time: 0.70 GtkComboBox - time: 7.17 GtkComboBoxEntry - time: 5.69 GtkSpinButton - time: 1.78 GtkProgressBar - time: 1.46 GtkToggleButton - time: 1.51 GtkCheckButton - time: 1.10 GtkRadioButton - time: 1.99 GtkTextView - Add text - time: 35.40 GtkTextView - Scroll - time: 4.46 GtkDrawingArea - Lines - time: 19.23 GtkDrawingArea - Circles - time: 26.06 GtkDrawingArea - Text - time: 7.26 GtkDrawingArea - Pixbufs - time: 2.28 --- Total time: 116.11
USB
pi@rpi4superbook:~ $ vblank_mode=0 glxgears ATTENTION: default value of option vblank_mode overridden by environment. 947 frames in 5.0 seconds = 189.269 FPS 1131 frames in 5.0 seconds = 225.955 FPS 1127 frames in 5.0 seconds = 225.065 FPS 1139 frames in 5.0 seconds = 227.528 FPS 1105 frames in 5.0 seconds = 220.751 FPS 1113 frames in 5.0 seconds = 222.581 FPS pi@rpi4superbook:~/Downloads/GeeXLab_FREE_rpi_gl21 $ gtkperf (gtkperf:1233): Gtk-WARNING **: 00:09:29.307: GtkSpinButton: setting an adjustment with non-zero page size is deprecated (gtkperf:1233): Gtk-WARNING **: 00:09:29.338: GtkSpinButton: setting an adjustment with non-zero page size is deprecated GtkPerf 0.40 - Starting testing: Sat Jul 4 00:09:37 2020 GtkEntry - time: 0.73 GtkComboBox - time: 9.61 GtkComboBoxEntry - time: 6.64 GtkSpinButton - time: 1.16 GtkProgressBar - time: 0.83 GtkToggleButton - time: 1.40 GtkCheckButton - time: 1.05 GtkRadioButton - time: 1.45 GtkTextView - Add text - time: 36.17 GtkTextView - Scroll - time: 5.45 GtkDrawingArea - Lines - time: 5.51 GtkDrawingArea - Circles - time: 11.72 GtkDrawingArea - Text - time: 4.40 GtkDrawingArea - Pixbufs - time: 0.83 --- Total time: 86.97
Switching to HDMI, multiple displays
The Pi Book Pro doesn't really make sense as a bench display, where you might switch it between multiple Raspberry Pis, or use it with Pis that also have to run on HDMI. It's best used with a Raspberry Pi dedicated to it, e.g. as a laptop replacement.
According to the DisplayLink documentation, as of this writing (July 2020), there are significant limitations:
- You can't use the Pi Book Pro as a second display alongside an HDMI display, it's one or the other
- You can't display a virtual console on the Pi Book Pro
If you switch to a new virtual console with CtrlAltF2, it will freeze the DisplayLink screen, and show the virtual console on HDMI 0 (aka HDMI-A-1
). Drawing to /dev/fb0
will work now, showing on the HDMI display. To return to X11 on the DisplayLink screen, CtrlF1 for X11's virtual console, then sudo service lightdm restart
.
Because virtual consoles aren't displayed on the DisplayLink screen, I suspect it's not possible to boot the Raspberry Pi into a virtual console only, without X11.
Raspberry Pi Zero
I couldn't get the display to start on a Raspberry Pi Zero. xrandr
reports the display is disconnected when plugged into the Zero's sole USB port with an OTG adapter.
Other open questions
❓How can I switch the function keys from being media keys by default (press Fn to get the function) to being function keys by default (and pressing Fn to get the media key)? I now suspect this will require remapping each key manually.
Installing on Pi 3B/4, Raspberry Pi OS August 2020, DisplayLink 5.3.1
By request, here are what I believe are accurate instructions for installing everything you need to run the Pi Book Pro on a Raspberry Pi 3B or 4, using the latest Raspberry Pi OS dated August 2020, and the latest DisplayLink 5.3.1 drivers for Ubuntu.
Plug an external HDMI display, USB keyboard, and USB mouse into your Raspberry Pi. You can also plug in the Pi Book Pro using a USB-A to USB-C cable (use the USB-C port on the Pi Book Pro) and use its keyboard and trackpad, although sometimes the DisplayLink installer will error out because of this. You definitely cannot use the Pi Book Pro's display to set up the Raspberry Pi for the first time.
Format a Micro SD card with Raspberry Pi OS. Using the official Raspberry Pi Imager is recommended. Follow the official instructions to set up your Raspberry Pi, including making sure your networking is working (wifi or ethernet). Restart when prompted. You'll have a desktop on your HDMI display that looks like this:

Next, we need to enable an option called "kernel mode-setting." Click on the Terminal icon () to open a console window, and type
sudo raspi-config
. This opens the text-based raspi-config
utility. Navigate the menus from Advanced Options
to GL Driver
and enable Fake KMS
. See the official raspi-config documentation for more detailed instructions if you need help. If it asks you to reboot, say Yes
.
Then, we'll download the DisplayLink drivers for the Pi Book Pro screen. Click on the Web Browser icon () and visit the URL
https://www.displaylink.com/downloads/ubuntu
. Click Download
then Accept
to start the download onto your Raspberry Pi.
Once the download completes, we'll need to uncompress and install it. Click on the Terminal icon again and type in cd Downloads
to change to the Downloads
directory. Then, unzip DisplayLink\ USB\ Graphics\ Software\ for\ Ubuntu\ 5.3.1.zip
to uncompress it (you may be able to autocomplete the file name by typing just unzip Display
and then pressing Tab). Run the installer by typing sudo bash ./displaylink-driver-5.3.1.34.run
(again, you may be able to autocomplete the file name by typing just sudo bash ./displaylink
and pressing Tab).
The DisplayLink driver will automatically download all the dependencies it needs. Hit Enter at the download prompt to confirm.
(If you're using the Pi Book Pro as your keyboard and mouse, there's a chance you'll get the error:
Detected running Xorg session and connected docking station Please disconnect the dock before continuing Installation terminated.
If this happens, you'll need to unplug the Pi Book Pro and use a different external USB keyboard and USB mouse, and re-run the installer.)
When the installer completes successfully, it will prompt you to reboot. We've a couple changes to make still, so press N and Enter to decline.
On the Pi 3B, the DisplayLink driver seems to occasionally load too slowly, and isn't ready by the time the Pi wants to display the desktop, so we need to force it to restart the desktop display manager in those cases. This is less of an issue on the faster Pi 4, but these changes are still safe to make. In the Terminal window, type sudo nano /lib/systemd/system/displaylink-driver.service
. This will start a text editor. Use the arrow keys to move down to the [Service]
section, and add a new line after the ExecStart
line that reads ExecStartPost=/bin/systemctl try-restart display-manager
. (If you're copy-and-pasting from the web browser, you can paste using CtrlShiftV.) That whole section should look like this:
[Service] ExecStartPre=/bin/sh -c 'modprobe evdi || (dkms install $(ls -t /usr/src | grep evdi | head -n1 | sed -e "s:-:/:") && modprobe evdi)' ExecStart=/opt/displaylink/DisplayLinkManager ExecStartPost=/bin/systemctl try-restart display-manager Restart=always WorkingDirectory=/opt/displaylink RestartSec=5
Press CtrlO, Enter to save, then CtrlX to exit. Enable the changes by typing sudo systemctl daemon-reload
in the Terminal window. (If you don't make these changes, and your Pi ever boots up but nothing shows on the screen, you can blindly reboot it by pressing CtrlAltDel to bring up the shutdown menu, then Down arrow to select Reboot
, then Spacebar to press it.)
We also need to accommodate the fact that the bezel covers up some of the pixels of the display. In the Terminal window, type sudo nano /usr/share/X11/xorg.conf.d/10-monitor.conf
to create a new monitor configuration file. In it, type or paste (CtrlShiftV) the following:
Section "Monitor" Identifier "DVI-I-1" # Warning: Aspect Ratio is not CVT standard. # 1800x1000 59.91 Hz (CVT) hsync: 62.19 kHz; pclk: 148.75 MHz Modeline "1800x1000_60.00" 148.75 1800 1912 2096 2392 1000 1003 1013 1038 -hsync +vsync # Warning: Aspect Ratio is not CVT standard. # 1904x1048 59.94 Hz (CVT) hsync: 65.15 kHz; pclk: 165.75 MHz Modeline "1904x1048_60.00" 165.75 1904 2024 2224 2544 1048 1051 1061 1087 -hsync +vsync # Warning: Aspect Ratio is not CVT standard. # 1864x1048 59.90 Hz (CVT) hsync: 65.11 kHz; pclk: 162.00 MHz Modeline "1864x1048_60.00" 162.00 1864 1984 2176 2488 1048 1051 1061 1087 -hsync +vsync Option "PreferredMode" "1904x1048_60.00" EndSection
Again, CtrlO, Enter to save, then CtrlX to exit. See the Display, overscan, bezel section above for details and additional configuration options.
Now we can reboot, and the Pi Book Pro should be the primary display for the Raspberry Pi desktop. In the Terminal window, type sudo reboot
. You can unplug your HDMI display, as well as your USB keyboard and USB mouse if you were using them.
I'm Vitorio, it's June 26, 2020, thanks for your time. Updated July 3, 2020 with firmware notes. Updated July 4, 2020 with display benchmarks. Updated July 7, 2020 with X11, HDMI, and trackpad notes. Updated July 9, 2020 with battery notes. Updated July 11, 2020 with Raspberry Pi Zero notes. Updated July 13, 2020 with 8GB Pi4 notes. Updated October 3, 2020 with installation instructions. Updated October 24, 2020 after testing an SSD installation. Updated November 14, 2020 with firmware downgrade information.