Below is a modified dependency graph of the pt-os
top-level package that is installed on top of Raspberry Pi OS to produce pi-topOS:
pt-os pt-os pt-os pt-recovery pt-recovery pt-os->pt-recovery pt-os-mods pt-os-mods pt-os->pt-os-mods pt-sys-oled pt-sys-oled pt-os->pt-sys-oled pt-touchscreen pt-touchscreen pt-os->pt-touchscreen pt-apps pt-apps pt-os->pt-apps pt-avs pt-avs pt-os->pt-avs pt-dev pt-dev pt-os->pt-dev pt-devices pt-devices pt-os->pt-devices pt-ui pt-ui pt-os->pt-ui pt-web-portal pt-web-portal pt-os->pt-web-portal pt-user-libs pt-user-libs pt-os->pt-user-libs neofetch neofetch pt-os->neofetch (>= 6.0.0) pt-firmware-updater pt-firmware-updater pt-os->pt-firmware-updater pt-networking pt-networking pt-os->pt-networking pt-os-updater pt-os-updater pt-os->pt-os-updater pt-os-mods->pt-sys-oled python3-pitop python3-pitop pt-os-mods->python3-pitop pt-notifications pt-notifications pt-os-mods->pt-notifications sonic-pi sonic-pi pt-os-mods->sonic-pi pt-device-manager pt-device-manager pt-os-mods->pt-device-manager pt-os-mods->pt-touchscreen pt-os-archive-keyring pt-os-archive-keyring pt-os-mods->pt-os-archive-keyring pt-sys-oled->python3-pitop python3-luma-oled python3-luma-oled pt-sys-oled->python3-luma-oled python3-pitopcommon python3-pitopcommon pt-sys-oled->python3-pitopcommon autorandr autorandr pt-sys-oled->autorandr (>= 1.9) pt-further-link pt-further-link pt-sys-oled->pt-further-link python3-luma-core python3-luma-core python3-pitop->python3-luma-core python3-pitop->python3-luma-oled python3-pitop->python3-pitopcommon python3-pitop->pt-device-manager python3-luma-oled->python3-luma-core (>= 1.12.0) python3-pitopcommon->pt-notifications python3-sonic python3-sonic python3-sonic->sonic-pi pt-device-manager->python3-pitopcommon pt-further-link->python3-pitopcommon touchegg touchegg pt-touchscreen->touchegg pt-apps->sonic-pi code code pt-apps->code pt-settings pt-settings pt-apps->pt-settings touche touche pt-apps->touche pt-avs->python3-pitop pt-settings->python3-pitop touche->touchegg pt-system-tools pt-system-tools pt-dev->pt-system-tools pt-system-tools->pt-notifications pt-devices->python3-pitop pt-devices->pt-device-manager pt-ui->autorandr pt-plym-splash pt-plym-splash pt-ui->pt-plym-splash pt-ui-mods pt-ui-mods pt-ui->pt-ui-mods pt-web-portal-desktop pt-web-portal-desktop pt-ui->pt-web-portal-desktop pt-ui-mods->python3-pitopcommon pt-ui-mods->pt-notifications papirus-folders papirus-folders pt-ui-mods->papirus-folders pt-icon-theme pt-icon-theme pt-ui-mods->pt-icon-theme python3-pitop-doc python3-pitop-doc pt-ui-mods->python3-pitop-doc pt-shutdown-helper pt-shutdown-helper pt-ui-mods->pt-shutdown-helper raspi2png raspi2png pt-ui-mods->raspi2png papirus-icon-theme papirus-icon-theme papirus-folders->papirus-icon-theme (>= 20171007) pt-icon-theme->papirus-icon-theme pt-web-portal-desktop->pt-web-portal web-renderer web-renderer pt-web-portal-desktop->web-renderer pt-web-portal->python3-pitopcommon pt-user-libs->python3-sonic python3-pitop-full python3-pitop-full pt-user-libs->python3-pitop-full python3-pitop-migr python3-pitop-migr pt-user-libs->python3-pitop-migr python3-pitop-full->python3-pitop (= 0.18.5) python3-pitop-full->python3-pitop-doc (= 0.18.5) python3-pitop-migr->python3-pitop python3-pitop-migr->python3-sonic pt-firmware-updater->python3-pitop pt-firmware-updater->python3-pitopcommon pt-firmware-updater->pt-notifications i2c-tools-extra i2c-tools-extra pt-firmware-updater->i2c-tools-extra pt-firmware-images pt-firmware-images pt-firmware-updater->pt-firmware-images pt-firmware-images->pt-firmware-updater pt-os-updater->python3-pitopcommon pt-os-updater->pt-notifications
Here is an outline of how the packages are organized:
pt-icon-theme
pt-plym-splash
pt-ui-mods
pt-notifications
pt-system-tools
pt-shutdown-helper
web-renderer
i2c-tools-extra (Additional I2C utilities)
pt-sys-oled
pt-touchscreen
Here is a more comprehensive guide (work in progress) of the packages that currently comprise pi-topOS:
Source Package Binary Package(s) Repository
pt-avs Link
i2c-tools-extra Link
luma.core Link
luma.oled Link
notify-send.sh Link
raspi2png Link
py-pitop-common Link
py-pitop-sdk py-pitop-sdk python3-pitop-full Link
pt-device-manager
pt-display-port pt-display-port pt-dp-usb-eth-gadget pt-dp-dhcp-server
pt-firmware-images
pt-firmware-updater
pt-further-link Link
pt-icon-theme Link
pt-networking Link
pt-os-core pt-os-core pt-os pt-apps pt-dev pt-devices pt-ui pt-user-libs pt-os-archive-keyring pi-top-4 pt-system-tools pt-notifications
pt-os-mods
pt-plym-splash Link
pt-recovery
pt-shutdown-helper Link
pt-sys-oled Link
pt-touchscreen Link
pt-ui-mods Link
pt-web-portal pt-web-portal pt-web-portal-desktop
pt-wireless-access-point
web-renderer Link
In addition to installing the pt-os
package, which in turn installs all other pi-topOS packages, the following changes are made during OS builds:
Change the default pi user password to pi-top
Enable VNC Server by default
Add pi-top software repository
Force HDMI out of HDMI1 on Raspberry Pi 4 to allow for VNC without a connected display
Force HDMI blanking
Enable hardware interfaces (SPI, I2C) used by pi-tops by default to allow detection on first boot
Enable extra video codecs in Raspberry Pi GPU firmware; adding native support for Raspberry Pi Camera
Sette GPU memory allocation to 128MB
Configure a DHCP server on pi-top [4]’s USB-OTG port
Sette up dynamic swap for better performance
Change hostname from 'raspberrypi' to 'pi-top'
Setting default locale and keyboard layout to US
Customize color scheme, font and icons
TODO: how device manager, SDK, common library and pi-top hardware all work together
TODO: how pi-topOS software hot-loads kernel modules using dtoverlay
and dtparam
for hardware interfaces. how interfaces are enabled/disabled or handled automatically
I2C
UART - pi-topPULSE microphone
SPI - pi-top [4] miniscreen
I2S - pi-topPULSE and pi-topSPEAKER
pi-top [3]'s onboard HDMI-to-I2S conversion
enabling volume control with hifiberry-alsactl.restore
TODO: communication protocols (e.g. ZMQ, udev, systemd), which modules require them, why, and how to handle strange "gotchas".