Skip to content
View 7Ji's full-sized avatar

Block or report 7Ji

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
7Ji/README.md

Welcome to Guoxin "7Ji" Pu's profile

Born a tinkerer, majored in business & trading, led campus media union, now working full time on OS, kernel and compiler.

My GitHub Stats

My current public blog site is at https://7ji.github.io/ .

My GitHub Language Stats

I created the following projects and maintain them actively:

  • ampart, a partition tool for Amlogic's proprietary eMMC partition format mainly found on their Android firmware, in C, based on my reverse-engineering, a patchset for mainline kernel is also available to natively support such partitions.
  • ampack, a tool to unpack, convert and (re)pack Amlogic burning images, in Rust, also based on my reverse-engineering, aiming to replace AML's proprietary aml_image_v2_packer binray.
  • git-mirrorer / gmr, a tool to mirror git repos, and archive and checkout them with submodules included implicitly, in C, using libgit2 and libyaml.
  • YAopenvfD, a helper daemon to improve the functionality of the linux_openvfd kernel module, for fragment LCD displays found on set-top boxes, in C.
  • eemount, a system utility to efficiently and elegantly set up the external ROMs mounting for EmuELEC (see below), in C, using libsystemd.
  • pkgbuild-rs, a naive PKGBUILD parsing library, that runs on any distro or platform (even non Arch), in Rust.
  • alnopm, an Arch Linux Pacman repository database parsing library, that runs on any distro or platform (even non Arch), in Rust.
  • arb, a builder to build an Arch Linux repo in a disk-space-and-network-efficient way, in Rust.
  • sd-networkd-wg-ddns, a systemd-networkd wireguard netdev endpoints DynDNS updater, in C.
  • wireguard-deployer, a single-config WireGuard keys and systemd-networkd + OpenWrt configs generator (also as tar with correct permissions), in Rust.
  • archrepo, an Arch Linux / Arch Linux ARM repo, focusing on media center use cases, hosting pre-built kernel and video de/encoding packages, notably for Rockchip RK3588 (Orange Pi 5/5B/5Plus, Orange Pi 3B, Radxa Rock 5B) and Amlogic platforms, updated hourly.
  • amlogic-s9xxx-archlinuxarm, orangepi5-archlinuxarm and orangepi5-rkloader providing pre-built ALARM / bootloader images with my ported/maintained kernels pre-installed.
  • nvrust, a daemon to turn any Linux box into a Network Video Recorder, in Rust, using libffmpeg.
  • videoArchiver.py, a video archiving tool, in Python, using ffmpeg.
  • usb2host in C, router_reporter in Go, mirai-ip-notifier in Go, arch_pkgbuilds_dumper in Python, CargoStranding in C++, CargoStrandingWeb in Javascript, and other nice tools.

I created the following organisations and actively lead & maintain them:

  • 7Ji-PKGBUILDs, collections of PKGBUILDs (recipes to build Arch Linux package from) submitted/maintained/co-maintained by myself, focusing on kernel, video de/encoding, and more. Consider it my own AUR.
  • HybridELEC, a downstream semi-distro to achieve side-by-side dual boot of CoreELEC (see below) and EmuELEC (see below), some special images are also released for chosen devices to achieve triple boot, with Android as the main OS. In various languages (including an Android App to switch OS) and based on kernel/booting reverse-engineering.

I maintaind the following projects previously and enjoyed the experience:

  • EmuELEC (during 2022-2023), a distro focusing on smooth out-of-box retro gaming experience on entry-level ARM devices, for Amlogic and Rockchip devices. As the kernel expert in team to introduce support to new devices.

I contributed to various projects and here's not enough space to document them.

Some of my upstreamable / non-upstreamable patches to mainline kernel and u-boot are hosted in the following repos/branches:

  • 7Ji/linux, the default amlogic tree contains my patchsets to enable Amlogic partitions support, port several device trees, and add/improve the JL21xx network PHY driver and openvfd driver.
  • 7Ji/u-boot, the default random-boxes tree contains my patchsets to port/add several device trees, and add support for environment-based partitions.
  • 7Ji/linux-orangepi, the default orange-pi-5.10-rk3588-gcc-12 branch contains my fixes to drivers, filesystem, memory management and more to make the BSP kernel buildable on post-gcc-12 toolchains.

Pinned Loading

  1. ampart ampart Public

    A partition tool for Amlogic's proprietary emmc partition format

    C 72 26

  2. archrepo archrepo Public

    A pacman repo focusing on Arch as media center, for ArchLinux on x86_64 and ArchLinux ARM on aarch64, updated hourly

    Shell 26 5

  3. YAopenvfD YAopenvfD Public

    Yet Another openvfd Daemon

    C 7 3

  4. git-mirrorer git-mirrorer Public

    To mirror git repos, and archive and checkout them with submodules included implicitly.

    C 6

  5. ampack ampack Public

    A tool to unpack / (re)pack AMLogic burning images

    Rust 18 3

  6. HybridELEC/HybridELEC HybridELEC/HybridELEC Public

    Side-by-side dual-bootable CoreELEC + EmuELEC, and on-eMMC triple boot with Android

    160 24