77 Commits
Author SHA1 Message Date
Joachim Wiberg 17a1b80b83 Namespace Infix Kconfig options under IX_
Infix defines its own Kconfig options with unprefixed names (IMAGE_*,
QEMU_*, TRUSTED_KEYS*) and an INFIX_ prefix.  Unprefixed names risk
clashing with Buildroot and with other br2-externals/spins that source
our tree.

Rename all 86 options to a common IX_ prefix, collapsing the existing
INFIX_ ones, e.g. INFIX_IMAGE_ID becomes IX_IMAGE_ID.  The os-release
INFIX_DESC field is a runtime interface, not a Kconfig option, and is
kept; the qemu Config.in generator's @ARCH@ symbol is updated to match.

Closes #1305

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-07-06 05:28:11 +02:00
Joachim Wiberg 52ba6d2ecc utils: mirroring script for download artifacts
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-07-06 05:23:53 +02:00
Joachim Wiberg 5df26b217a utils: link to GNS3 blog instead of GNS3 marketplace
Friendlier for first-time users, and drives traffic to the blog, hopefully.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-07-01 08:26:15 +02:00
Mattias Walström 3fdbe15585 aarch64: board: Acer Connect Vero rename board
Fix so the board actually build when selected and rename the board
to the actual name `Acer Connect Vero W6m`
2026-05-20 11:19:12 +02:00
Mattias Walström bfbf08943b mt7986: Add Acer Connect Vero w6 2026-05-19 06:38:32 +02:00
Joachim Wiberg 2397e7684c board/aarch64: drag Marvell ESPRESSObin in from the cold
- Add a board README to explain how to get Infix running
- Update mkimage.sh to allow creating images without boot loader

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-04-23 14:19:07 +02:00
Joachim Wiberg 31df56308b board: add support for Banana Pi BPI-R4
Add board support for the BananaPi BPI-R4 router board, based on the
MediaTek MT7988A (Filogic 880) SoC with quad-core Cortex-A73 CPU.

The BPI-R4 is the successor to the BPI-R3 but uses entirely different
silicon: the internal switch runs at 2.5 GbE per port, the two SFP+
uplinks use native USXGMII at up to 10 Gbps, and WiFi is provided by
a MediaTek MT7996E PCIe module supporting tri-band WiFi 7 (2.4/5/6 GHz).

Two board variants, BPI-R4-2g5 and BPI-R4P, replace one SFP+ cage with
a 2.5 GbE RJ45 port (using the MT7988A internal 2.5G PHY); the R4P adds
an optional PoE daughterboard on that port.  Both use the upstream
mt7988a-bananapi-bpi-r4-2g5 device tree.

Interfaces:
- Standard R4:  eth1 (gmac1/sfp2 LAN cage) → sfp2, eth2 (gmac2/sfp1 WAN cage) → sfp1
- R4-2g5/R4P:  eth1 (2.5G PHY) → wan, eth2 (gmac2/sfp1 WAN cage) → sfp1

Factory reset / WPS button (GPIO14, active-low): detected by U-Boot at
boot for factory reset; reused by Linux as KEY_WPS_BUTTON at runtime.

eMMC install note: the MT7988A eMMC (pins 38-49) and SD card (pins 32-37)
use separate physical pads so there is no electrical bus sharing, unlike
some BPi-R3 configurations.  However, a single MMC controller
(mmc@11230000) handles both, so only one is active per boot session.
The eMMC install procedure therefore still requires an intermediate SPI
NAND bootloader step until a Linux-side install path is tested.

SD card build (bpi_r4_sd_boot_defconfig) now uses the new
mt7988a_bpir4_sd U-Boot defconfig with cap-sd-highspeed enabled,
giving 50 MHz SD transfers instead of the previous 25 MHz legacy mode.

Also adds MT7988/MT7996 firmware support to the buildroot linux-firmware
package, for 2.5 GbE port PHY and WiFi7 extension board, and updates the
aarch64_defconfig, aarch64_minimal_defconfig, the arch README, CI
boot/image workflows, mkimage.sh, and the ChangeLog.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-04-10 11:19:34 +02:00
Joachim Wiberg 5ed71fa10d utils: ixll scan: show spinner while waiting for avahi-browse
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-22 20:23:45 +01:00
Joachim Wiberg 6560af1b94 board: add support for Banana Pi BPI-R64
Add board support for the BananaPi BPi-R64 router board, based on the
MediaTek MT7622 SoC and MT7531 Gigabit Ethernet switch.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-10 12:11:10 +01:00
Joachim Wiberg b2c729dc7d utils: fix kernel-upgrade.sh clobbering existing ChangeLog entries
The awk insertion path used getline to peek at the line right after the
"### Changes", but only printed it when NF == 0 (blank line).  If the
section already had a non-blank entry (e.g. a Buildroot upgrade line),
getline consumed it silently and the kernel line was written in its
place.

Fix by adding the missing else branch so the consumed line is always
re-emitted — blank lines before the new entry, non-blank lines after it.

Also demote the missing-UNRELEASED guard from exit 1 to a warning with
return 0, so the workflow doesn't abort when a new release cycle hasn't
had its ChangeLog section opened yet.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-09 19:26:04 +01:00
Joachim Wiberg c68db78309 netbrowse: fix device detection in default view
Apple devices (e.g. Apple TV) publish vv=1 in their AirPlay/RAOP TXT
records, causing a false positive with our Infix platform marker.
Tighten the filter to require vv=1 together with at least one management
service type (ssh, https, http, netconf, restconf), which Apple devices
never advertise. Keep on=Infix as a fallback for older firmware that
predates vv=1.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-09 19:25:26 +01:00
Joachim Wiberg e2c29cb1a7 utils: add fleet management commands to ixll
Introduce libfleet.sh and a new 'fleet' subcommand to ixll for managing
and operating enrolled Infix devices via RESTCONF.

Device configuration is stored in ~/.config/infix/config.json
(chmod 600): and organised by profile, allowing bulk operations across
groups of devices (e.g. all aarch64 targets).

New commands:

  ixll fleet enroll [-d] [-p profile] [-u user] [-w password] <name> <address>
  ixll fleet list
  ixll fleet upgrade <name|profile> <url>
  ixll fleet backup  [-o dir] <name|profile>
  ixll fleet reboot  <name|profile>

Upgrade runs in parallel across a fleet and shows a live per-device
progress bar by polling the infix-system:install-bundle RPC and the
installer state from the YANG operational data store.

The global -A flag (admin/admin) is honoured as a credential fallback
for devices enrolled without an explicit password.

Also fix a pre-existing typo: ">2" → ">&2" in the error path.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-09 19:24:36 +01:00
Joachim Wiberg 707731d23e utils: drop serial n:o from mdns scan output
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-09 19:24:35 +01:00
Joachim Wiberg ff4a346fd4 utils: ignore errors from avahi-browse
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-09 19:24:35 +01:00
Mattias WalströmandJoachim Wiberg a1a02f2727 utils: bump-gns3: Fix syntax after qcow image was renamed 2026-02-24 06:42:52 +01:00
Mattias Walström 16e72e8741 boards: Add new board bpi-r3-mini
This is a simple two port router board, with the same
WiFi chips as BPI-r3.

The bootloader shall be the same as the BPI-r3, the bootloader
now probes which of the two is booting by checking for the PHYS
that only exist on BPI-r3-mini.
2026-02-22 11:52:05 +01:00
Joachim Wiberg a7a630e0d9 utils: allow creating bootloader-only images
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-06 13:30:20 +01:00
Joachim Wiberg 0c8ce332d1 utils: support SamA7G65 in mkimage.sh
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-06 13:30:20 +01:00
Joachim Wiberg 683f696e19 utils: add 'scan' feature to ixll
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-02 17:50:06 +01:00
Joachim Wiberg e7943b5e05 board,configs: rename aarch32 -> arm for consistency with BR2_ARCH
All build scripts use $BR2_ARCH to determine location of critical board files
and configuration.  As per previous decisions, the BR2_ARCH variable controls
all naming in Infix and for consistency the defconfig files are also renamed.

This fixes the issue with missing DTB file(s) for the Raspberry Pi 2B.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-29 20:42:50 +01:00
Joachim Wiberg 8f1c4d6bf2 utils: new script, extract-changelog.md for releases
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-25 11:15:46 +01:00
Joachim Wiberg b060495525 utils: adjust ChangeLog update in kernel-upgrade.sh
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-25 11:15:45 +01:00
Mattias Walström 1fd6aabe0c Fix automatic kernel upgrade
Was not prepared correctly for 6.18 kernels
2026-01-20 09:18:11 +01:00
Joachim Wiberg 1728b68483 utils: initial support data analysis tool
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-12-02 14:11:00 +01:00
Joachim Wiberg 69c350c92f board/aarch32: initial support for Raspberry Pi 2B
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-11-26 19:46:55 +01:00
Mattias Walström 7f7eecaaeb kernel-upgrade: Fix when a linux update already exist.
In this case, it should just be replaced.
2025-11-15 10:26:41 +01:00
Joachim WibergandGitHub 00f20612f2 Merge pull request #1240 from kernelkit/bananapi-emmc
Bananapi eMMC support
2025-11-14 06:02:05 +01:00
Joachim Wiberg 95cd83542a utils: add support for generating both sdcard and emmc images
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-11-12 23:07:59 +01:00
Joachim Wiberg 94fa7ea21c .github: drop rootfs.squashfs from release tarballs
Release tarballs waste ~131MB per architecture by including both
rootfs.itb and rootfs.squashfs, even though rootfs.itb already
contains the squashfs (itb = 4096-byte header + squashfs).

This change removes rootfs.squashfs from releases and provides two
solutions for users who need it:

1. utils/extract-squashfs.sh - Full-featured utility for extracting
   squashfs from release tarballs or .itb files. Includes validation
   and helpful error messages.

2. board/common/qemu/qemu.sh - Auto-extraction support. When running
   in initrd mode, automatically extracts rootfs.squashfs from
   rootfs.itb if missing. Zero user impact - ./qemu.sh just works!

Space savings: ~262MB per release (2 architectures × 131MB)

Fixes #858

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-11-08 12:57:35 +01:00
Mattias Walström a1b5e3b63b bpi-r3: Add eMMC bootloader 2025-11-07 21:15:55 +01:00
Mattias WalströmandGitHub 7ea340d6fd Merge pull request #1238 from kernelkit/gns3-fixes
Improve bump-gns3.py error handling and usage text
2025-11-04 21:50:18 +01:00
Joachim Wiberg 9df64f163c utils: improve bump-gns3.py error handling and usage text
Split download and MD5 computation into separate functions for clarity.
Add proper error handling for HTTP 404 and network errors. Improve help
text to mention appliances/ directory location.

[skip ci]

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-11-04 15:07:48 +01:00
Mattias Walström 0fde346a43 CI: Improve check for new kernel
Improve the script to be able to run in workflow and fix
the worflow and run each night.

Signed-off-by: Mattias Walström <lazzer@gmail.com>
2025-11-03 16:01:32 +01:00
Joachim Wiberg 1a0dbec571 utils: add support for downloading latest bootloader
This commit adds support to simplify sdcard.img generation by downloading the
latest bootloader build for a board from the 'latest-boot' release tag.  The
tarball is saved in dl/bootloader/ and is extracted to a temporary directory
in output/build/boot-$board-xxxx on every invocation of mkimage.sh.  This is
used for invoking genimage and bmaptool before copying the resulting images
to output/images/.  (If $O is set, it is used instead of output/, above).

New options:
 -d   Download latest bootloader build for the given board
 -f   Force re-download even if bootlaoder tarball existgs

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-11-01 23:05:18 +01:00
Joachim WibergandGitHub ed2355833e Merge pull request #1209 from kernelkit/confd-refactor-callbacks
Major refactor of how sysrepo callbacks is used in confd

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-31 17:49:53 +01:00
Joachim Wiberg daf8b29178 uttls/mkimage.sh: consolidate sdcard.img generation
This commit consolidates mkimage.sh scripts into a unified SD card image
creation tool that works for all boards.  It needs a bootloader an $ARCH
rootfs.squashfs image and a genimage.cfg.in template.

- Detects build directories from `O=` environment variable or `output/`
- Sources `.config` to discover Buildroot paths
- Uses Buildroot's `support/scripts/genimage.sh` when available
- Automatically generates `.bmap` files if `bmaptool` is available
- Fallback to direct `genimage` invocation if wrapper not found

See the online instructions for usage.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-31 13:26:09 +01:00
Mattias Walström a280960d47 kernel-upgrade: Improve error handling 2025-10-31 09:47:37 +01:00
Mattias Walström bb274dcdd7 Automate kernel updates to new minor version
This will fix #1106, in time, but only allows manual trigger for now,
needs more test and verification

utils/kernel-upgrade.sh at least automate all the manual manual processes
for upgrading the kernel.
2025-10-29 15:24:35 +01:00
Joachim Wiberg 887e34e0ef doc: fix RESTCONF scripting examples and curl.sh wrapper
The curl.sh wrapper script had several issues:
- Used 'shift 2' incorrectly without proper argument validation
- Required hostname as enviroment variable instead of option
- Lacked proper option parsing, should behave like a cross between
  curl and sysrepocfg

All examples have been updated to match the refactored script, and
a local copy in utils/curl.sh has been added.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-13 21:24:17 +02:00
Joachim Wiberg dd4221802f utils: silence srload (debug messages)
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-09-28 03:50:22 +02:00
Mattias Walström 4f0aded5a0 utils: Add script to add a new version to GNS3 marketplace
You need first to clone gns3-registry from https://github.com/GNS3/gns3-registry

Follow this steps:
1. ./utils/bump-gns3.py 25.08.0 ../../gns3/gns3-registry/appliances/infix.gns3a
2. TEST in gns3, just add the new version, start it.
3. run python3 check.py inside gns3-registry, verify infix is ok.
4. Create a pull request to gns3-registry

This fix #1107
2025-09-04 17:48:43 +02:00
Tobias Waldekranz 85c4b579d3 ixbin: Add util script to update image contents
[skip-ci]
2025-07-04 11:20:46 +02:00
Mattias Walström e3f87799b6 utils/kernel-refresh.sh: Stage defconfigs
Everything else got staged, but not defconfigs
2025-06-27 13:39:31 +02:00
Mattias Walström a7e72a46d9 confd: Simplify enabling features in YANG models
If a extra infix feature  require features to be added to an already
loaded module. Instead of have the exact module definition in multiple
places (with date), this will allow a much more flexible sytax:

MODULES=(
	"infix-interfaces -e containers"
)

This require that the infix-interfaces is loaded *before* this file
is run.
2025-06-19 15:23:25 +02:00
Mattias Walström 028ab7c1f9 srload: Cleanup when running outside buildtree
The original syntax did not work and the initial intention,
that root is always required is also false.
2025-04-11 20:31:43 +02:00
Mattias Walström d0277de958 srload: Add support for multiple search directories 2025-04-11 08:21:50 +02:00
Mattias Walström 184ed470d7 kernel-refresh.sh: Update linux hash on update 2025-04-07 16:57:17 +02:00
Joachim Wiberg 55632eebaa utils: update usage text with example, add -f
- Update usage text for readability, add example
 - Reindent getopts case and add -h
 - Allow 'git rm -f' to remove already staged patches

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-04-07 06:06:42 +02:00
Joachim WibergandTobias Waldekranz 01d07b4942 utils: rename sysrepo-load-modules.sh -> srload
Simplify name, follow new srop tool naming convention.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-02-12 23:21:08 +01:00
Joachim WibergandTobias Waldekranz 039cb5db74 utils: fix linter warnings, simplify, and improve log messages on update
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-02-12 23:21:08 +01:00