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

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

A free and open source software enjoyer, creator, maintainer and contributor; preferring low-level and disliking over-abstraction.

My GitHub Stats

I write some blogs at https://7ji.github.io/ when I see fit. The posts there only focus on non-development stuffs, like servers, booting, reverse-engineering, etc, as I prefer to document the projects in tree and write codes that need no extra ducument to understand.

My GitHub Language Stats

I use various programming languages, for various things they're best used for. My favourites are C which I consider myself an expert in, and Rust which I love its strict typing and compile-time checking.

I created and maintain the following projects:

  • 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, in Rust.
  • arch_repo_builder / arb, a builder to build an Arch Linux repo in a disk-space-and-network-efficient way, 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, lead and maintain the following organisations:

  • 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.
  • 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:

  • 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 or am contributing to the following projects:

  • linux, the kernel, to mainline and its many vendor BSP forks (see below)
  • u-boot, the bootloader, to mainline and its many vendor BSP forks (see below)
  • systemd, a system and service manager
  • libgit2, a cross-platform, linkable library implementation of Git
  • CoreELEC, a lightweight OS for Kodi
  • archlinuxarm, a downstream distro of Arch Linux for ARM platforms.
  • armbian fork, a downstream distro of Debian and a build framework.

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.
  • I also submit to LKML directly when I consider them upstreamable, like the one for the embedded partitions in block subsystem (v1, v2)

Pinned

  1. ampart ampart Public

    A partition tool for Amlogic's proprietary emmc partition format

    C 56 25

  2. eemount eemount Public

    Multi-source ROMs mounting utility for EmuELEC

    C 5 2

  3. 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 18 5

  4. YAopenvfD YAopenvfD Public

    Yet Another openvfd Daemon

    C 5 2

  5. git-mirrorer git-mirrorer Public

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

    C 4

  6. pkgbuild-rs pkgbuild-rs Public

    A naive PKGBUILD parsing library for Rust

    Rust 2 1