Compare commits

...

27 Commits

Author SHA1 Message Date
3ea090ba17 Update README.md 2026-04-16 19:44:11 -03:00
c7803807e6 Comments regarding RPI 0W in extlinux.conf and config_common.txt 2026-04-16 18:46:41 -03:00
603f738f8a Raspberry Pi Zero W compatibility 2026-04-16 18:42:23 -03:00
f3869f8ae6 Bump gfxcanvas to release 0.2 2026-04-09 21:33:25 -03:00
a7f0cbea9c Add build info to post-build.sh 2026-04-09 18:15:58 -03:00
6d90c7ebca Add GfxCanvas as buildroot package 2026-04-09 16:07:34 -03:00
1e20f93562 Set ifup to trigger only after driver finishes probing 2026-04-04 02:01:33 -03:00
719ef5ea40 WLAN autoconfiguration through wpa_supplicant and mdev rules 2026-04-04 01:52:36 -03:00
14481a2939 rtl8821cu mdev rule for automatic usb modeswitch 2026-04-04 01:01:44 -03:00
bacddccd76 Set correct permissions for ssh keys in device_table.txt 2026-04-04 00:42:57 -03:00
b95cd7b030 Add mdev, rtw88 firmware and usb_modeswitch_data 2026-04-04 00:14:15 -03:00
d857eaad1c Add wpa_supplicant and rtl8821cu driver 2026-04-03 20:50:01 -03:00
1230b7dd43 Fix ssd1306 dt overlay 2026-04-03 19:24:25 -03:00
127eb68fd4 Add gdb server to target 2026-04-03 16:12:41 -03:00
e9e9c6cf07 Add ssd1306.dtbo by default 2026-03-31 20:29:03 -03:00
df4320a2ce Add rootfs overlay with SSH keys to be used during development 2026-03-31 20:19:02 -03:00
956ec1dd44 Remove rootfs overlay skeleton 2026-03-31 20:07:24 -03:00
237adc5efe Add iperf3 and openssh, and remove kmod tools 2026-03-31 17:59:37 -03:00
f6f5ce3e88 Hotfix: Commit buildroot BR2_TARGET_UBOOT_PATCH needed for uboot device tree overlay support 2026-03-30 17:06:07 -03:00
c96999abed Add device tree overlay for ssd1306 i2c display 2026-03-30 13:28:51 -03:00
00e3ad2a80 Add device tree overlay support in Linux, U-Boot, and post image script 2026-03-30 13:28:16 -03:00
002757909d Add ssd1306 driver to linux, and set defconfig to out of tree 2026-03-30 12:03:52 -03:00
7321394be1 Add libgpiod2 and htop 2026-03-29 20:11:53 -03:00
16357f1941 Buildroot locally-built toolchain, with 6.12 kernel headers 2026-03-29 19:51:03 -03:00
0aaa51bed0 Change kernel to mainline, and devicetree to bcm2835 2026-03-29 18:28:10 -03:00
402ec9f263 Insert extlinux.conf and zImage in post image script 2026-03-28 19:35:37 -03:00
8fe419c23d Add uboot 2026-03-28 19:01:18 -03:00
30 changed files with 806 additions and 311 deletions

View File

@@ -2,5 +2,6 @@ menu "RPI Common packages"
source "$BR2_EXTERNAL_RPI_COMMON_PATH/package/my-shared-lib/Config.in"
source "$BR2_EXTERNAL_RPI_COMMON_PATH/package/my-common-tool/Config.in"
source "$BR2_EXTERNAL_RPI_COMMON_PATH/package/gfxcanvas/Config.in"
endmenu

304
README.md
View File

@@ -1,8 +1,13 @@
# br2-external-common
# common-raspberrypi
Common Buildroot BR2_EXTERNAL tree for all Raspberry Pi projects. This
repository provides shared board support, packages, rootfs overlays, and
patches that are used across multiple projects.
Common Buildroot BR2_EXTERNAL tree for Raspberry Pi projects. This repository
provides shared board support, packages, rootfs overlays, and patches that are
used across multiple projects.
Supported boards:
- Raspberry Pi 1 Model B+
- Raspberry Pi Zero W
This repository also pins the upstream Buildroot version as a git submodule,
serving as the single source of truth for which Buildroot release is used. When
@@ -11,29 +16,61 @@ a project pulls in this repo, it transitively gets the tested Buildroot version.
## Repository layout
```
br2-external-common/
common-raspberrypi/
├── external.desc Buildroot external tree descriptor (name: RPI_COMMON)
├── external.mk Includes all common package .mk files
├── Config.in Top-level Kconfig menu for common packages
├── Makefile Wrapper for standalone build invocations
├── flash.sh SD card flashing helper script
├── buildroot/ [submodule] Upstream Buildroot, pinned to release tag
├── board/
│ └── raspberrypi/
│ ├── post_build.sh Shared post-build script (rootfs fixups)
│ ├── post_image.sh Shared post-image script (genimage invocation)
│ ├── genimage.cfg SD card partition layout
── overlay/ Shared rootfs overlay (copied into target rootfs)
└── etc/
└── network/
└── interfaces
├── package/
├── my-shared-lib/ Example shared library (CMake package)
└── my-common-tool/ Example shared tool (generic package)
│ ├── post-build.sh Shared post-build script (mdev rules, networking, build-info)
│ ├── post-image.sh Shared post-image script (genimage invocation)
│ ├── genimage.cfg.in SD card partition layout template
── config_common.txt Raspberry Pi firmware config.txt
├── cmdline_common.txt Kernel command line
├── extlinux.conf U-Boot extlinux boot configuration
├── linux_defconfig Custom Linux kernel configuration
│ ├── uboot_defconfig Custom U-Boot configuration
├── device_table.txt File permission fixups (SSH keys, mdev scripts)
├── dtoverlay/ Custom device tree overlays
│ ├── uboot-patches/ Patches applied to U-Boot (DT overlay support)
│ └── rootfs-overlay/ Shared rootfs overlay (copied into target rootfs)
│ ├── etc/
│ │ ├── ssh/ Development SSH host keys
│ │ └── wpa_supplicant.conf
│ └── lib/
│ └── mdev/ Hotplug scripts (USB modeswitch, WLAN setup)
├── package/ Shared Buildroot packages
├── patches/ Patches to upstream Buildroot packages
└── configs/
└── rpi_common_test_defconfig Minimal defconfig for standalone CI testing
└── raspberrypi_common_defconfig Defconfig for standalone builds
```
## Boot architecture
The system boots through the Raspberry Pi firmware into U-Boot, which then
loads the Linux kernel via extlinux:
1. **Raspberry Pi firmware** (`bootcode.bin`, `start.elf`) — reads
`config.txt` (generated from `config_common.txt`), loads `u-boot.bin`.
2. **U-Boot** — reads `extlinux/extlinux.conf`, loads the kernel (`zImage`),
device tree, and device tree overlays.
3. **Linux kernel** — boots with the command line from `extlinux.conf`.
U-Boot is patched (via `uboot-patches/`) to support device tree overlays.
The `genimage.cfg.in` template is expanded at build time by `post-image.sh`
to produce the final SD card image with a FAT boot partition and an ext4
rootfs partition.
### Board selection
The default device tree targets the Raspberry Pi 1 B+. To build for the
Raspberry Pi Zero W, edit `config_common.txt` and `extlinux.conf` to
uncomment the Zero W device tree and comment out the B+ one. See the comments
in those files for details.
## Standalone setup
Use this to develop and test the common tree without any project-specific
@@ -52,40 +89,43 @@ sudo apt-get install -y build-essential gcc g++ bash patch gzip bzip2 \
### Clone and initialize
```sh
git clone git@github.com:your-org/br2-external-common.git
cd br2-external-common
git clone git@github.com:your-org/common-raspberrypi.git
cd common-raspberrypi
git submodule update --init
```
This pulls the Buildroot source into `buildroot/` at the pinned release tag.
### Build the test image
### Build the image
The wrapper Makefile handles the Buildroot invocation:
The wrapper Makefile passes any target through to Buildroot:
```sh
make defconfig # Loads rpi_common_test_defconfig
make # Builds the full image (takes a while on first run)
make raspberrypi_common_defconfig # Load the defconfig
make # Build the full image (takes a while on first run)
```
The SD card image will be at `output/images/sdcard.img`.
### Flash the SD card
```sh
sudo ./flash.sh /dev/sdX
```
The script validates that the target device is removable, unmounts any
mounted partitions, and writes the image with progress output.
### Useful build commands
```sh
make menuconfig # Open Buildroot configuration menu
make savedefconfig # Save current .config back to the test defconfig
make savedefconfig # Save current .config back to the defconfig
make linux-rebuild # Rebuild just the kernel (any Buildroot target works)
make my-shared-lib-rebuild # Rebuild a specific package
make clean # Clean build artifacts
make distclean # Remove the entire output directory
```
You can use a different defconfig by passing DEFCONFIG:
```sh
make defconfig DEFCONFIG=rpi_common_minimal_defconfig
```
Any valid Buildroot target is passed through directly by the Makefile.
## Creating a new project
@@ -96,15 +136,15 @@ project-specific packages, overlays, defconfigs, and board overrides.
### Step 1: Create the project repository
```sh
mkdir br2-external-myproject
cd br2-external-myproject
mkdir myproject-raspberrypi
cd myproject-raspberrypi
git init
```
### Step 2: Add common as a submodule
```sh
git submodule add git@github.com:your-org/br2-external-common.git common
git submodule add git@github.com:your-org/common-raspberrypi.git common
git submodule update --init --recursive
```
@@ -121,7 +161,17 @@ name: MY_PROJECT
desc: My project-specific Buildroot configuration
```
### Step 4: Create external.mk
### Step 4: Create supporting directories
```sh
mkdir -p rootfs-overlay/etc
mkdir -p package
mkdir -p configs
echo '/output/' > .gitignore
```
### Step 5: Create external.mk
This file includes only the project's own packages. The common packages are
handled by the common tree's own `external.mk` — Buildroot merges them
@@ -131,108 +181,70 @@ automatically because both trees are passed as separate BR2_EXTERNAL paths.
include $(sort $(wildcard $(BR2_EXTERNAL_MY_PROJECT_PATH)/package/*/*.mk))
```
### Step 5: Create Config.in
### Step 6: Create Config.in
Same principle — only source the project's own package configs:
Same principle — only source the project's own package configs. This file
can start empty and be populated as packages are added:
```
menu "My Project packages"
source "$BR2_EXTERNAL_MY_PROJECT_PATH/package/my-app/Config.in"
endmenu
```
### Step 6: Create a project defconfig
### Step 7: Create a project defconfig
Create `configs/rpi_myproject_defconfig`. Start by copying the common test
Create `configs/raspberrypi_myproject_defconfig`. Start by copying the common
defconfig and modify it:
```sh
cp common/configs/rpi_common_test_defconfig configs/rpi_myproject_defconfig
cp common/configs/raspberrypi_common_defconfig configs/raspberrypi_myproject_defconfig
```
Edit the defconfig to:
1. Add both overlays (common first, then project-specific):
Edit the defconfig to add both overlays (common first, then project-specific):
```
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_RPI_COMMON_PATH)/board/raspberrypi/overlay $(BR2_EXTERNAL_MY_PROJECT_PATH)/overlay"
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_RPI_COMMON_PATH)/board/raspberrypi/rootfs-overlay $(BR2_EXTERNAL_MY_PROJECT_PATH)/rootfs-overlay"
```
2. Add project-specific packages:
### Step 8: Create the wrapper Makefile
```
BR2_PACKAGE_MY_APP=y
```
The common packages (`BR2_PACKAGE_MY_SHARED_LIB`, etc.) remain as-is.
### Step 7: Create the wrapper Makefile
Create a `Makefile` at the project root:
Create a `Makefile` at the project root. Like the common Makefile, it uses a
catch-all rule to pass any Buildroot target through directly:
```makefile
BUILDROOT_DIR := $(CURDIR)/common/buildroot
OUTPUT_DIR := $(CURDIR)/output
BR2_EXTERNAL := $(CURDIR)/common:$(CURDIR)
DEFCONFIG ?= rpi_myproject_defconfig
CONFIG_EXISTS := $(wildcard $(OUTPUT_DIR)/.config)
.PHONY: all defconfig menuconfig savedefconfig clean distclean
.PHONY: all
all:
ifeq ($(CONFIG_EXISTS),)
@echo "No .config found. Run 'make defconfig' first."
@echo "No .config found. Load a defconfig first, e.g.:"
@echo " make raspberrypi_myproject_defconfig"
@exit 1
endif
$(MAKE) -C $(BUILDROOT_DIR) BR2_EXTERNAL=$(BR2_EXTERNAL) O=$(OUTPUT_DIR)
defconfig:
$(MAKE) -C $(BUILDROOT_DIR) BR2_EXTERNAL=$(BR2_EXTERNAL) O=$(OUTPUT_DIR) $(DEFCONFIG)
menuconfig:
$(MAKE) -C $(BUILDROOT_DIR) BR2_EXTERNAL=$(BR2_EXTERNAL) O=$(OUTPUT_DIR) menuconfig
savedefconfig:
$(MAKE) -C $(BUILDROOT_DIR) BR2_EXTERNAL=$(BR2_EXTERNAL) O=$(OUTPUT_DIR) savedefconfig \
BR2_DEFCONFIG=$(CURDIR)/configs/$(DEFCONFIG)
clean:
$(MAKE) -C $(BUILDROOT_DIR) BR2_EXTERNAL=$(BR2_EXTERNAL) O=$(OUTPUT_DIR) clean
distclean:
rm -rf $(OUTPUT_DIR)
%:
$(MAKE) -C $(BUILDROOT_DIR) BR2_EXTERNAL=$(BR2_EXTERNAL) O=$(OUTPUT_DIR) $@
```
Note the key difference from the common Makefile:
Note the key differences from the common Makefile:
- `BUILDROOT_DIR` points to `common/buildroot/` (nested submodule)
- `BR2_EXTERNAL` lists both trees, colon-separated: `common:project`
### Step 8: Create supporting directories
```sh
mkdir -p overlay/etc
mkdir -p package
mkdir -p board
mkdir -p configs
echo '/output/' > .gitignore
```
### Step 9: Commit and build
```sh
git add -A
git commit -m "Initial project skeleton"
make defconfig
make raspberrypi_myproject_defconfig
make
```
@@ -241,100 +253,74 @@ make
After following these steps, your project should look like this:
```
br2-external-myproject/
myproject-raspberrypi/
├── external.desc
├── external.mk
├── Config.in
├── Makefile
├── .gitmodules
├── .gitignore
├── common/ [submodule -> br2-external-common]
├── common/ [submodule -> common-raspberrypi]
│ ├── buildroot/ [nested submodule -> upstream Buildroot]
│ ├── board/raspberrypi/
│ ├── package/
│ └── ...
├── configs/
│ └── rpi_myproject_defconfig
├── overlay/ Project-specific rootfs overlay
│ └── raspberrypi_myproject_defconfig
├── rootfs-overlay/ Project-specific rootfs overlay
├── package/ Project-specific packages
│ └── my-app/
└── output/ Build output (gitignored)
```
## Branching strategy
## Wireless networking
This repository uses long-lived branches to support multiple Buildroot
versions simultaneously, mirroring Buildroot's own LTS release model.
The build includes support for USB Wi-Fi adapters based on the Realtek
RTL8821CU chipset, as well as the Raspberry Pi Zero W's built-in Wi-Fi
(Broadcom BCM43430). Both paths end with wpa_supplicant handling
authentication and DHCP providing an IP address.
### Branch naming
### Raspberry Pi Zero W (built-in Wi-Fi)
- `main` — Tracks the latest Buildroot release (currently 2026.02). Active
development of shared packages happens here.
- `YYYY.MM.x` — Maintenance branches for older Buildroot LTS lines (e.g.,
`2023.02.x`). These receive only bug fixes and minor Buildroot bumps within
the same LTS series.
The Zero W's Broadcom BCM43430 is connected via SDIO. The `brcmfmac` driver
and firmware blobs (included via `BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI`)
are loaded at boot. The `wlan0` interface is brought up automatically by the
`auto wlan0` stanza in `/etc/network/interfaces` (appended by
`post-build.sh`), which starts `wpa_supplicant` and obtains an IP via DHCP.
### Creating a maintenance branch
### USB RTL8821CU adapters
When a project needs to stay on an older Buildroot version:
RTL8821CU adapters require an extra USB modeswitch step, handled through
mdev hotplug rules:
```sh
# Start from the last commit that used the older Buildroot
git checkout -b 2023.02.x <commit-hash>
1. **USB modeswitch** — the adapter initially enumerates as a CD-ROM device
(`0bda:1a2b`). An mdev rule triggers `usb_modeswitch` to switch it into
Wi-Fi mode (`0bda:c820`).
2. **WLAN setup** — once the Wi-Fi device appears, a second mdev rule runs
`wlan_setup.sh`, which brings up `wlan0` and starts `wpa_supplicant`.
3. **DHCP** — the interface obtains an IP address via DHCP.
# Verify the buildroot submodule points to the right tag
cd buildroot
git log --oneline -1 # Should show 2023.02.x tag
cd ..
### Configuring Wi-Fi credentials
git push -u origin 2023.02.x
Edit `board/raspberrypi/rootfs-overlay/etc/wpa_supplicant.conf` with the
target network's SSID and passphrase:
```
network={
ssid="MyNetwork"
psk="MyPassphrase"
}
```
### Bumping a minor Buildroot version on a maintenance branch
### Post-build rootfs modifications
For example, upgrading from 2023.02.1 to 2023.02.2:
The `post-build.sh` script makes the following modifications to the target
rootfs at build time:
```sh
git checkout 2023.02.x
cd buildroot
git fetch --tags
git checkout 2023.02.2
cd ..
git add buildroot
git commit -m "buildroot: bump to 2023.02.2"
git push
```
Then in the project that uses this branch:
```sh
cd common
git pull origin 2023.02.x
cd ..
git add common
git commit -m "common: pick up buildroot 2023.02.2"
```
### Backporting shared package fixes
When a bug fix on `main` also applies to a maintenance branch:
```sh
git checkout 2023.02.x
git cherry-pick <commit-hash-from-main>
# Resolve conflicts if the package versions have diverged
# Test with: make defconfig && make
git push
```
### End-of-life
When a legacy project is decommissioned, its maintenance branch can be
archived (renamed to `archive/2023.02.x`) or deleted. No other projects
are affected.
- Adds mdev rules for USB modeswitch (`rtl8821cu_usb_modeswitch.sh`) and
WLAN setup (`wlan_setup.sh`).
- Appends `wlan0` configuration to `/etc/network/interfaces` (DHCP with
wpa_supplicant).
- Generates `/etc/build-info` with the build user, date, and git revision.
## Adding a new shared package
@@ -342,15 +328,15 @@ are affected.
2. Add a `Config.in` with the Kconfig entry.
3. Add a `.mk` file with the Buildroot package recipe.
4. Source the new `Config.in` in the top-level `Config.in`.
5. Enable the package in `configs/rpi_common_test_defconfig`.
5. Enable the package in `configs/raspberrypi_common_defconfig`.
6. Build and verify: `make my-new-package-rebuild`.
See `package/my-shared-lib/` (CMake example) and `package/my-common-tool/`
(generic example) for reference.
## Adding patches to upstream Buildroot packages
Place patch files under `patches/<package-name>/`. Buildroot automatically
applies patches from `BR2_EXTERNAL_RPI_COMMON_PATH/patches/<package-name>/`
during the package build. Patches must follow Buildroot's naming convention:
`NNNN-description.patch` (e.g., `0001-fix-cross-compilation.patch`).
U-Boot patches live separately under `board/raspberrypi/uboot-patches/` and
are applied via the `BR2_TARGET_UBOOT_PATCH` defconfig option.

View File

@@ -1,13 +1,13 @@
# Please note that this is only a sample, we recommend you to change it to fit
# your needs.
# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE.
# See http://buildroot.org/manual.html#rootfs-custom
# and http://elinux.org/RPiconfig for a description of config.txt syntax
start_file=start.elf
fixup_file=fixup.dat
kernel=zImage
# Device tree to be used bu U-Boot:
device_tree=bcm2835-rpi-b-plus.dtb
#device_tree=bcm2835-rpi-zero-w.dtb
kernel=u-boot.bin
# To use an external initramfs file
#initramfs rootfs.cpio.gz
@@ -15,9 +15,10 @@ kernel=zImage
# Disable overscan assuming the display supports displaying the full resolution
# If the text shown on the screen disappears off the edge, comment this out
disable_overscan=1
enable_uart=1
# How much memory in MB to assign to the GPU on Pi models having
# 256, 512 or 1024 MB total memory
gpu_mem_256=100
gpu_mem_512=100
gpu_mem_1024=100
gpu_mem_256=64
gpu_mem_512=64
gpu_mem_1024=128

View File

@@ -0,0 +1,12 @@
# <name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>
# ssh keys
/etc/ssh/ssh_host_ecdsa_key f 600 0 0 - - - - -
/etc/ssh/ssh_host_ed25519_key f 600 0 0 - - - - -
/etc/ssh/ssh_host_rsa_key f 600 0 0 - - - - -
#rtl8821cu usb modeswitch script
/lib/mdev/rtl8821cu_usb_modeswitch.sh f 755 0 0 - - - - -
# WLAN setup
/lib/mdev/wlan_setup.sh f 755 0 0 - - - - -

View File

@@ -0,0 +1,20 @@
/dts-v1/;
/plugin/;
/ {
compatible = "brcm,bcm2835";
fragment@0 {
target = <&i2c1>;
__overlay__ {
ssd1306: oled@3c {
compatible = "solomon,ssd1306fb-i2c";
reg = <0x3c>;
solomon,width = <128>;
solomon,height = <64>;
solomon,page-offset = <0>;
solomon,com-invdir;
};
};
};
};

View File

@@ -0,0 +1,9 @@
label buildroot
kernel /zImage
devicetree /bcm2835-rpi-b-plus.dtb
# devicetree /bcm2835-rpi-zero-w.dtb
devicetree-overlay /ssd1306.dtbo
append root=/dev/mmcblk0p2 rootwait console=tty1 console=ttyAMA0,115200
# In Raspberry Pi Zero W, the mini-uart is used for console instead of the PL011:
# append root=/dev/mmcblk0p2 rootwait console=tty1 console=ttyS1,115200

View File

@@ -1,53 +0,0 @@
/* genimage.cfg - SD card image layout for Raspberry Pi
*
* Partition layout:
* - boot (FAT32, 64MB): kernel, device tree, bootloader files
* - rootfs (ext4, 256MB): root filesystem
*
* The final image is written to sdcard.img.
*
* Adjust partition sizes as needed for your project. Projects can
* override this file by providing their own genimage.cfg and setting
* GENIMAGE_CFG in their post-image script.
*/
image boot.vfat {
vfat {
files = {
"bcm2710-rpi-3-b.dtb",
"bcm2711-rpi-4-b.dtb",
"rpi-firmware/bootcode.bin",
"rpi-firmware/start.elf",
"rpi-firmware/fixup.dat",
"rpi-firmware/config.txt",
"rpi-firmware/cmdline.txt",
"Image"
}
}
size = 64M
}
image rootfs.ext4 {
ext4 {
label = "rootfs"
}
size = 256M
}
image sdcard.img {
hdimage {
}
partition boot {
partition-type = 0xC
bootable = "true"
image = "boot.vfat"
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext4"
}
}

View File

@@ -0,0 +1,25 @@
image boot.vfat {
vfat {
files = {
#BOOT_FILES#
}
}
size = 32M
}
image sdcard.img {
hdimage {
}
partition boot {
partition-type = 0xC
bootable = "true"
image = "boot.vfat"
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext4"
}
}

View File

@@ -0,0 +1,192 @@
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SYSVIPC=y
CONFIG_NO_HZ_IDLE=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_PREEMPT_VOLUNTARY=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_LOG_BUF_SHIFT=18
CONFIG_CFS_BANDWIDTH=y
CONFIG_RT_GROUP_SCHED=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_PERF=y
CONFIG_NAMESPACES=y
CONFIG_SCHED_AUTOGROUP=y
CONFIG_RELAY=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_EXPERT=y
CONFIG_KALLSYMS_ALL=y
CONFIG_PROFILING=y
CONFIG_KEXEC=y
CONFIG_ARCH_MULTI_V6=y
CONFIG_ARCH_BCM=y
CONFIG_ARCH_BCM2835=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPUFREQ_DT=y
CONFIG_ARM_RASPBERRYPI_CPUFREQ=y
CONFIG_VFP=y
# CONFIG_SUSPEND is not set
CONFIG_PM=y
CONFIG_JUMP_LABEL=y
# CONFIG_GCC_PLUGINS is not set
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
# CONFIG_COMPAT_BRK is not set
CONFIG_KSM=y
CONFIG_CMA=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_NETWORK_SECMARK=y
CONFIG_NETFILTER=y
CONFIG_BT=y
CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_BCM=y
CONFIG_CFG80211=y
CONFIG_MAC80211=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
# CONFIG_STANDALONE is not set
CONFIG_RASPBERRYPI_FIRMWARE=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_SCAN_ASYNC=y
CONFIG_NETDEVICES=y
CONFIG_BCMGENET=y
CONFIG_USB_LAN78XX=y
CONFIG_USB_USBNET=y
CONFIG_USB_NET_SMSC95XX=y
CONFIG_BRCMFMAC=m
CONFIG_RTW88=y
CONFIG_RTW88_8821CU=y
CONFIG_RTW88_DEBUG=y
CONFIG_RTW88_DEBUGFS=y
CONFIG_ZD1211RW=y
CONFIG_INPUT_EVDEV=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_BCM2835AUX=y
CONFIG_SERIAL_AMBA_PL011=y
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
CONFIG_SERIAL_DEV_BUS=y
CONFIG_TTY_PRINTK=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_BCM2835=y
CONFIG_SPI=y
CONFIG_SPI_BCM2835=y
CONFIG_SPI_BCM2835AUX=y
CONFIG_GPIO_SYSFS=y
CONFIG_SENSORS_RASPBERRYPI_HWMON=m
CONFIG_THERMAL=y
CONFIG_BCM2711_THERMAL=y
CONFIG_BCM2835_THERMAL=y
CONFIG_WATCHDOG=y
CONFIG_BCM2835_WDT=y
CONFIG_MFD_SYSCON=y
CONFIG_REGULATOR=y
CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_REGULATOR_GPIO=y
CONFIG_MEDIA_SUPPORT=y
CONFIG_DRM=y
CONFIG_DRM_V3D=y
CONFIG_DRM_VC4=y
CONFIG_DRM_SIMPLEDRM=y
CONFIG_DRM_SSD130X=y
CONFIG_DRM_SSD130X_I2C=y
CONFIG_FB=y
CONFIG_FB_SSD1307=y
CONFIG_SOUND=y
CONFIG_SND=y
CONFIG_SND_SOC=y
CONFIG_SND_BCM2835_SOC_I2S=y
CONFIG_USB=y
CONFIG_USB_OTG=y
CONFIG_USB_STORAGE=y
CONFIG_USB_DWC2=y
CONFIG_NOP_USB_XCEIV=y
CONFIG_USB_GADGET=y
CONFIG_USB_ETH=m
CONFIG_USB_ETH_EEM=y
CONFIG_USB_G_SERIAL=m
CONFIG_MMC=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_IPROC=y
CONFIG_MMC_BCM2835=y
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_ONESHOT=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
CONFIG_LEDS_TRIGGER_CPU=y
CONFIG_LEDS_TRIGGER_GPIO=y
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
CONFIG_LEDS_TRIGGER_TRANSIENT=y
CONFIG_LEDS_TRIGGER_CAMERA=y
CONFIG_DMADEVICES=y
CONFIG_DMA_BCM2835=y
CONFIG_STAGING=y
CONFIG_FB_TFT=y
CONFIG_FB_TFT_SSD1306=y
CONFIG_SND_BCM2835=m
CONFIG_VIDEO_BCM2835=m
CONFIG_CLK_RASPBERRYPI=y
CONFIG_MAILBOX=y
CONFIG_BCM2835_MBOX=y
# CONFIG_IOMMU_SUPPORT is not set
CONFIG_RASPBERRYPI_POWER=y
CONFIG_PWM=y
CONFIG_PWM_BCM2835=y
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_FANOTIFY=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_MISC_FILESYSTEMS is not set
CONFIG_NFS_FS=y
CONFIG_ROOT_NFS=y
CONFIG_NFSD=y
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_UTF8=y
# CONFIG_XZ_DEC_ARM is not set
# CONFIG_XZ_DEC_ARMTHUMB is not set
CONFIG_DMA_CMA=y
CONFIG_CMA_SIZE_MBYTES=32
CONFIG_PRINTK_TIME=y
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_DYNAMIC_DEBUG=y
CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
CONFIG_DEBUG_FS=y
CONFIG_KGDB=y
CONFIG_KGDB_KDB=y
CONFIG_DEBUG_MEMORY_INIT=y
CONFIG_FUNCTION_PROFILER=y
CONFIG_STACK_TRACER=y
CONFIG_SCHED_TRACER=y
CONFIG_STRICT_DEVMEM=y
CONFIG_TEST_KSTRTOX=y

View File

@@ -1,12 +0,0 @@
# /etc/network/interfaces - Common network configuration
#
# This file is part of the shared rootfs overlay and provides a
# sensible default network configuration for all Raspberry Pi projects.
# Projects can override this by placing their own version in their
# project-specific overlay (which is applied after this one).
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp

69
board/raspberrypi/post-build.sh Executable file
View File

@@ -0,0 +1,69 @@
#!/bin/sh
# post_build.sh - Common post-build script for Raspberry Pi
#
# Called by Buildroot after assembling the target rootfs.
# Arguments:
# $1 = path to the target rootfs directory (e.g., output/target)
#
# Environment:
# BR2_EXTERNAL_RPI_COMMON_PATH = path to this external tree
#
# Use this script for:
# - Fixing file permissions
# - Creating symlinks
# - Generating config files that depend on build-time variables
# - Stripping unnecessary files from the rootfs
#
# Do NOT use this for:
# - Installing packages (use rootfs overlay or a package .mk instead)
# - Modifying files outside $1
# Add usb_modeswitch mdev rule
grep -q "usb_modeswitch" "$TARGET_DIR/etc/mdev.conf" || \
echo '$PRODUCT=bda/1a2b.* root:root 0660 */lib/mdev/rtl8821cu_usb_modeswitch.sh' >> "$TARGET_DIR/etc/mdev.conf"
# Add wlan_setup mdev rule
grep -q "wlan_setup" "$TARGET_DIR/etc/mdev.conf" || \
echo '$PRODUCT=bda/c820.* root:root 0660 */lib/mdev/wlan_setup.sh' >> "$TARGET_DIR/etc/mdev.conf"
# Add wlan0 configuration
grep -q "iface wlan0" "$TARGET_DIR/etc/network/interfaces" || \
cat >> "$TARGET_DIR/etc/network/interfaces" << 'EOF'
auto wlan0
iface wlan0 inet dhcp
pre-up ip link set wlan0 up
pre-up wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
EOF
# Generate /etc/build-info with details about this build
build_user="$(id -un)"
build_host="$(hostname)"
build_date="$(date '+%Y-%m-%d %H:%M:%S %z')"
# Determine the git revision the same way the Linux kernel does:
# prefer a tag (git describe), fall back to the short hash, and append
# "-dirty" if tracked files are modified or there are untracked files.
build_rev="unknown"
if [ -n "$BR2_EXTERNAL_RPI_COMMON_PATH" ] && \
git -C "$BR2_EXTERNAL_RPI_COMMON_PATH" rev-parse --is-inside-work-tree >/dev/null 2>&1; then
git_dir="$BR2_EXTERNAL_RPI_COMMON_PATH"
build_rev="$(git -C "$git_dir" describe --always --tags 2>/dev/null || \
git -C "$git_dir" rev-parse --short HEAD 2>/dev/null || \
echo unknown)"
# Refresh the index so diff-index doesn't report stale stat info
git -C "$git_dir" update-index --refresh >/dev/null 2>&1 || :
dirty=""
if ! git -C "$git_dir" diff-index --quiet HEAD -- 2>/dev/null; then
dirty="-dirty"
elif [ -n "$(git -C "$git_dir" ls-files --others --exclude-standard 2>/dev/null)" ]; then
dirty="-dirty"
fi
build_rev="${build_rev}${dirty}"
fi
cat > "$TARGET_DIR/etc/build-info" << EOF
Built by: ${build_user}@${build_host}
Build date: ${build_date}
Revision: ${build_rev}
EOF

53
board/raspberrypi/post-image.sh Executable file
View File

@@ -0,0 +1,53 @@
#!/bin/bash
set -e
BOARD_DIR="$(dirname $0)"
BOARD_NAME="$(basename ${BOARD_DIR})"
GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg"
GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
# Prepare extlinux directory in BINARIES_DIR
mkdir -p "${BINARIES_DIR}/extlinux"
cp "${BOARD_DIR}/extlinux.conf" "${BINARIES_DIR}/extlinux/extlinux.conf"
# generate genimage from template if a board specific variant doesn't exists
if [ ! -e "${GENIMAGE_CFG}" ]; then
GENIMAGE_CFG="${BINARIES_DIR}/genimage.cfg"
FILES=()
for i in "${BINARIES_DIR}"/*.dtb "${BINARIES_DIR}"/rpi-firmware/*; do
FILES+=( "${i#${BINARIES_DIR}/}" )
done
for i in "${BINARIES_DIR}"/*.dtbo; do
FILES+=( "${i#${BINARIES_DIR}/}" )
done
FILES+=( "u-boot.bin" )
FILES+=( "zImage" )
FILES+=( "extlinux/" )
BOOT_FILES=$(printf '\\t\\t\\t"%s",\\n' "${FILES[@]}")
sed "s|#BOOT_FILES#|${BOOT_FILES}|" "${BOARD_DIR}/genimage.cfg.in" \
> "${GENIMAGE_CFG}"
fi
# Pass an empty rootpath. genimage makes a full copy of the given rootpath to
# ${GENIMAGE_TMP}/root so passing TARGET_DIR would be a waste of time and disk
# space. We don't rely on genimage to build the rootfs image, just to insert a
# pre-built one in the disk image.
trap 'rm -rf "${ROOTPATH_TMP}"' EXIT
ROOTPATH_TMP="$(mktemp -d)"
rm -rf "${GENIMAGE_TMP}"
genimage \
--rootpath "${ROOTPATH_TMP}" \
--tmppath "${GENIMAGE_TMP}" \
--inputpath "${BINARIES_DIR}" \
--outputpath "${BINARIES_DIR}" \
--config "${GENIMAGE_CFG}"
exit $?

View File

@@ -1,34 +0,0 @@
#!/bin/sh
# post_build.sh - Common post-build script for Raspberry Pi
#
# Called by Buildroot after assembling the target rootfs.
# Arguments:
# $1 = path to the target rootfs directory (e.g., output/target)
#
# Environment:
# BR2_EXTERNAL_RPI_COMMON_PATH = path to this external tree
#
# Use this script for:
# - Fixing file permissions
# - Creating symlinks
# - Generating config files that depend on build-time variables
# - Stripping unnecessary files from the rootfs
#
# Do NOT use this for:
# - Installing packages (use rootfs overlay or a package .mk instead)
# - Modifying files outside $1
set -e
TARGET_DIR="$1"
# Example: ensure /etc/hostname exists with a default value
if [ ! -f "${TARGET_DIR}/etc/hostname" ]; then
echo "rpi-common" > "${TARGET_DIR}/etc/hostname"
fi
# Example: remove unnecessary documentation to save space
rm -rf "${TARGET_DIR}/usr/share/man"
rm -rf "${TARGET_DIR}/usr/share/doc"
echo ">>> Common post-build script completed"

View File

@@ -1,35 +0,0 @@
#!/bin/sh
# post_image.sh - Common post-image script for Raspberry Pi
#
# Called by Buildroot after filesystem images (ext4, etc.) are generated.
# Arguments:
# $1 = path to the images directory (e.g., output/images)
#
# Environment:
# BR2_EXTERNAL_RPI_COMMON_PATH = path to this external tree
# BINARIES_DIR = same as $1
# BUILD_DIR = path to the build directory
#
# This script uses genimage to assemble the final SD card image
# from the boot files and root filesystem.
set -e
BOARD_DIR="${BR2_EXTERNAL_RPI_COMMON_PATH}/board/raspberrypi"
# Use project-specific genimage.cfg if it exists, otherwise use common one.
# Projects can override by setting GENIMAGE_CFG in their own post-image script.
GENIMAGE_CFG="${GENIMAGE_CFG:-${BOARD_DIR}/genimage.cfg}"
# genimage requires a temporary directory
GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
rm -rf "${GENIMAGE_TMP}"
genimage \
--rootpath "${TARGET_DIR}" \
--tmppath "${GENIMAGE_TMP}" \
--inputpath "${BINARIES_DIR}" \
--outputpath "${BINARIES_DIR}" \
--config "${GENIMAGE_CFG}"
echo ">>> SD card image generated: ${BINARIES_DIR}/sdcard.img"

View File

@@ -0,0 +1,9 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQSl9RVGjxEE1Z6qDY21KA6tmgLqacnk
vKc1kSkID/EbnevNtVCsiXFnz3+8SVhwN40LvsGTYCvpvY1rfdbEMuQ5AAAAqN1fGILdXx
iCAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKX1FUaPEQTVnqoN
jbUoDq2aAuppyeS8pzWRKQgP8Rud6821UKyJcWfPf7xJWHA3jQu+wZNgK+m9jWt91sQy5D
kAAAAgW9F8JZ52i66TzRFQXijQ9fCZNKoQvYLQNbFsRTtouyYAAAAOcm9vdEBidWlsZHJv
b3QBAg==
-----END OPENSSH PRIVATE KEY-----

View File

@@ -0,0 +1 @@
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKX1FUaPEQTVnqoNjbUoDq2aAuppyeS8pzWRKQgP8Rud6821UKyJcWfPf7xJWHA3jQu+wZNgK+m9jWt91sQy5Dk= root@buildroot

View File

@@ -0,0 +1,7 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACBum+4jD3lEmZe0zInr6m0FoTfijCtR3ja59pYjpYVJNwAAAJg/TeMTP03j
EwAAAAtzc2gtZWQyNTUxOQAAACBum+4jD3lEmZe0zInr6m0FoTfijCtR3ja59pYjpYVJNw
AAAEASEHCJMowIsJDYg06NfQl9vQG6xGMEjSbiYJJMtRJNS26b7iMPeUSZl7TMievqbQWh
N+KMK1HeNrn2liOlhUk3AAAADnJvb3RAYnVpbGRyb290AQIDBAUGBw==
-----END OPENSSH PRIVATE KEY-----

View File

@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG6b7iMPeUSZl7TMievqbQWhN+KMK1HeNrn2liOlhUk3 root@buildroot

View File

@@ -0,0 +1,38 @@
-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----

View File

@@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCpRgSaPyq4pKLSUrHKPOH9zF2dVEo686f+oZIOVWMuMHw858T2AAu+kstMtPVsAcCY+HZHdCbRp1yh1l9UV3GdrpW8eex413wzpf7yHsil2CIbfheVY43Qrw3E34etw8bMqoNBxZpHmZEFtDC18DcdtBHaVycrHYQRM6SgbTG++TeVDL33bP+BREEK6cAvbUcJbaV96w7M8CtJAfy1xKOMHgeOggoaymrg3jBZqJ1VHrdu3jYbAuH+DrNMNPVKYk/61LP4+9FLswPpyHFZgvLswMdE5bd/s92cfwn6ovOOty4gwfd25w14VYfxpDnEMuLP4afUCF9cqf577v1St8YJYzc/v4O+MnILLORCJz07hCXw5rvPSYkk3bDMDK4UVGPgiSvkHZDVXgL50xHFvjGPkhLbM/iUzm/zp8IOCu8LLbBKOUWP6e5wpfPiS4pfS1bWwLHeQbxmiHH7ogzgKTnr8hg0wGbJHbFINL76Mq+gQI4ALshD8r8/WQ21QWPhlSc= root@buildroot

View File

@@ -0,0 +1,4 @@
network={
ssid="Gabriel_2G"
psk="gabrielwifi"
}

View File

@@ -0,0 +1,3 @@
#!/bin/sh
[ "$ACTION" = "add" ] || exit 0
usb_modeswitch -v 0bda -p 1a2b -c /usr/share/usb_modeswitch/0bda:1a2b &

View File

@@ -0,0 +1,13 @@
#!/bin/sh
case "$ACTION" in
bind)
[ -e /sys/class/net/wlan0 ] || exit 0
ifdown wlan0 2>/dev/null
killall wpa_supplicant 2>/dev/null
ifup wlan0
;;
remove|unbind)
ifdown wlan0 2>/dev/null
killall wpa_supplicant 2>/dev/null
;;
esac

View File

@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN91vSBSoQ6Xlvohjp6cu4IkL83KKEx//BLgQdvbukHR gabriel@gabriel-a65

View File

@@ -0,0 +1,10 @@
--- a/board/raspberrypi/rpi/rpi.env
+++ b/board/raspberrypi/rpi/rpi.env
@@ -75,6 +75,7 @@
scriptaddr=0x05400000
pxefile_addr_r=0x05500000
fdt_addr_r=0x05600000
+fdtoverlay_addr_r=0x056A0000
ramdisk_addr_r=0x05700000
boot_targets=mmc usb pxe dhcp

View File

@@ -0,0 +1,51 @@
CONFIG_ARM=y
CONFIG_ARCH_CPU_INIT=y
CONFIG_ARCH_BCM283X=y
CONFIG_TEXT_BASE=0x00008000
CONFIG_SYS_MALLOC_F_LEN=0x400
CONFIG_TARGET_RPI=y
CONFIG_NR_DRAM_BANKS=1
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x7ffff00
CONFIG_ENV_SIZE=0x4000
CONFIG_DEFAULT_DEVICE_TREE="bcm2835-rpi-b"
CONFIG_OF_LIBFDT_OVERLAY=y
CONFIG_SYS_LOAD_ADDR=0x1000000
CONFIG_EFI_LOADER=y
CONFIG_BOOTSTD_DEFAULTS=y
CONFIG_OF_BOARD_SETUP=y
CONFIG_FDT_SIMPLEFB=y
CONFIG_USE_PREBOOT=y
CONFIG_SYS_PBSIZE=1049
# CONFIG_DISPLAY_CPUINFO is not set
# CONFIG_DISPLAY_BOARDINFO is not set
CONFIG_MISC_INIT_R=y
CONFIG_SYS_PROMPT="U-Boot> "
CONFIG_CMD_GPIO=y
CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y
CONFIG_CMD_FS_UUID=y
CONFIG_ENV_FAT_DEVICE_AND_PART="0:1"
CONFIG_ENV_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_TFTP_TSIZE=y
CONFIG_BCM2835_GPIO=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_BCM2835=y
CONFIG_PINCTRL=y
# CONFIG_PINCTRL_GENERIC is not set
# CONFIG_REQUIRE_SERIAL_CONSOLE is not set
CONFIG_SYSINFO=y
CONFIG_SYSINFO_SMBIOS=y
CONFIG_USB=y
CONFIG_USB_DWC2=y
CONFIG_USB_KEYBOARD=y
CONFIG_USB_HOST_ETHER=y
CONFIG_USB_ETHER_SMSC95XX=y
CONFIG_VIDEO=y
# CONFIG_VIDEO_BPP8 is not set
# CONFIG_VIDEO_BPP16 is not set
CONFIG_SYS_WHITE_ON_BLACK=y
CONFIG_VIDEO_BCM2835=y
CONFIG_CONSOLE_SCROLL_LINES=10
CONFIG_PHYS_TO_BUS=y

View File

@@ -1,34 +1,62 @@
BR2_arm=y
BR2_arm1176jzf_s=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_GLIBC_STABLE=y
BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches"
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_12=y
BR2_BINUTILS_VERSION_2_45_X=y
BR2_GCC_VERSION_15_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_PACKAGE_HOST_GDB=y
BR2_GDB_VERSION_16=y
BR2_DOWNLOAD_FORCE_CHECK_HASHES=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y
BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt $(BR2_EXTERNAL_RPI_COMMON_PATH)/board/raspberrypi/device_table.txt"
BR2_SYSTEM_DHCP="eth0"
BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi/post-image.sh"
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_RPI_COMMON_PATH)/board/raspberrypi/rootfs-overlay"
BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi/post-build.sh $(BR2_EXTERNAL_RPI_COMMON_PATH)/board/raspberrypi/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_RPI_COMMON_PATH)/board/raspberrypi/post-image.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,21b410140c47ffab5668399f6f143c7d7b935c8b)/linux-21b410140c47ffab5668399f6f143c7d7b935c8b.tar.gz"
BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi"
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.74"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_RPI_COMMON_PATH)/board/raspberrypi/linux_defconfig"
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2708-rpi-b-rev1 broadcom/bcm2708-rpi-b broadcom/bcm2708-rpi-b-plus broadcom/bcm2708-rpi-cm"
BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2835-rpi-b-plus broadcom/bcm2835-rpi-zero-w"
BR2_LINUX_KERNEL_CUSTOM_DTS_DIR="$(BR2_EXTERNAL_RPI_COMMON_PATH)/board/raspberrypi/dtoverlay/"
BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_XZ=y
BR2_PACKAGE_GDB=y
BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI=y
BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_BT=y
BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_WIFI=y
BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_RTW88=y
BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="$(BR2_EXTERNAL_RPI_COMMON_PATH)/board/raspberrypi/config_common.txt"
BR2_PACKAGE_RPI_FIRMWARE_CMDLINE_FILE="$(BR2_EXTERNAL_RPI_COMMON_PATH)/board/raspberrypi/cmdline_common.txt"
# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set
BR2_PACKAGE_USB_MODESWITCH_DATA=y
BR2_PACKAGE_LIBGPIOD2=y
BR2_PACKAGE_LIBGPIOD2_TOOLS=y
BR2_PACKAGE_IPERF3=y
BR2_PACKAGE_OPENSSH=y
BR2_PACKAGE_WPA_SUPPLICANT=y
BR2_PACKAGE_WPA_SUPPLICANT_WPA3=y
BR2_PACKAGE_HTOP=y
BR2_PACKAGE_KMOD=y
BR2_PACKAGE_KMOD_TOOLS=y
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_SIZE="120M"
# BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_PATCH="$(BR2_EXTERNAL_RPI_COMMON_PATH)/board/raspberrypi/uboot-patches/"
BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG=y
BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_RPI_COMMON_PATH)/board/raspberrypi/uboot_defconfig"
BR2_TARGET_UBOOT_NEEDS_OPENSSL=y
BR2_TARGET_UBOOT_NEEDS_GNUTLS=y
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_KMOD_XZ=y
BR2_PACKAGE_HOST_MTOOLS=y
BR2_PACKAGE_GFXCANVAS=y

View File

@@ -0,0 +1,14 @@
config BR2_PACKAGE_GFXCANVAS
bool "gfxcanvas"
depends on BR2_INSTALL_LIBSTDCPP
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_13
help
Small C++ framebuffer graphics application that draws an
info screen (date/time, hostname, network addresses) on a
Linux framebuffer device. Intended for SSD1306-class OLEDs
exposed as /dev/fbN via fbtft.
https://git.gmlima.com/Gabriel/GfxCanvas
comment "gfxcanvas needs a toolchain w/ C++, gcc >= 13"
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_13

View File

@@ -0,0 +1,60 @@
#!/bin/sh
#
# Start gfxcanvas info display
#
DAEMON="gfxcanvas"
DAEMON_PATH="/usr/bin/$DAEMON"
DAEMON_ARGS="/dev/fb1"
PIDFILE="/var/run/$DAEMON.pid"
start() {
printf 'Starting %s: ' "$DAEMON"
# shellcheck disable=SC2086
start-stop-daemon -S -q -m -b -p "$PIDFILE" \
-x "$DAEMON_PATH" -- $DAEMON_ARGS
status=$?
if [ "$status" -eq 0 ]; then
echo "OK"
else
echo "FAIL"
fi
return "$status"
}
stop() {
printf 'Stopping %s: ' "$DAEMON"
start-stop-daemon -K -q -p "$PIDFILE"
status=$?
if [ "$status" -eq 0 ]; then
rm -f "$PIDFILE"
echo "OK"
else
echo "FAIL"
fi
return "$status"
}
restart() {
stop
sleep 1
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
restart
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit $?

View File

@@ -0,0 +1,20 @@
################################################################################
#
# gfxcanvas
#
################################################################################
GFXCANVAS_VERSION = 0.2
GFXCANVAS_SITE = https://git.gmlima.com/Gabriel/GfxCanvas.git
GFXCANVAS_SITE_METHOD = git
GFXCANVAS_LICENSE = GPL-3.0
GFXCANVAS_LICENSE_FILES = LICENSE
GFXCANVAS_CONF_OPTS = -DPROJECT_NAME=gfxcanvas
define GFXCANVAS_INSTALL_INIT_SYSV
$(INSTALL) -D -m 0755 $(GFXCANVAS_PKGDIR)/S99gfxcanvas \
$(TARGET_DIR)/etc/init.d/S99gfxcanvas
endef
$(eval $(cmake-package))