An opensource OpenWrt variant for mainland China users.
Go to file
Ray Wang 6c58532733 ramips: add support for OrayBox X3A
OrayBox X3A is a 2.4/5GHz dual band AC router, based on MediaTek MT7621.

Specification:
* SoC: MT7621
* RAM: DDR3 128 MiB
* Flash: 16 MiB NOR (XM25Q128)
* Wi-Fi: (single chip hosting both 2.4G and 5G)
  * 2.4GHz: MT7615
  * 5GHz: MT7615
* Ethernet: 3x 1000Mbps
  * Switch: MT7530
* LED:
  * Ethernet LEDs: On the back of the router, hardware-controlled.
  * Status LEDs: One "pixel-like" RGB LED in the front of the router,
                 which is actually made up of 3 individual LEDs (with
                 dedicated GPIO pins) with the color of Red, Green,
                 and Blue.
                 The OEM firmware only lights up one color at a time to
                 indicate status, but that's very boring, and the colors
                 actually look great when combined, so I've improvised a
                 little and made them indicate netdev activities.
                 My test results:
                 GPIO 13/14/15
                 000 white (actually more like bright green or cyan
                            because the brightness of the green LED is
                            higher than red and blue)
                 001 bright purple
                 010 bright green
                 011 red
                 100 bright cyan
                 101 blue
                 110 green
                 111 off

Flash Layout:
 0x0000000-0x0030000 : "u-boot"
 0x0030000-0x0040000 : "u-boot-env"
 0x0040000-0x0050000 : "factory"
 0x0050000-0x0f50000 : "firmware"
 /*0x0f50000 to 0x0fe0000 is undefined, same as OEM firmware*/
 0x0fe0000-0x0ff0000 : "bdinfo"
 0x0ff0000-0x1000000 : "reserve"

MAC address:
 MAC               Source                          Description    Fix
 A0:CX:XX:BX:XX:0D BDINFO_9                        LAN(LABEL)     DTS
 A0:CX:XX:BX:XX:0E BDINFO_9 + 1                    WAN            DTS
 A2:CX:XX:BX:XX:0F FACTORY_4                       WIFI2G         DTS
 A2:CX:XX:CX:XX:0F SETBIT 7 (FACTORY_4 + 0x100000) WIFI5G         HOTPLUG
 A6:CX:XX:BX:XX:0F N/A                             WIFI2G_CLIENT  N/A
 A6:DX:XX:BX:XX:0F N/A                             WIFI5G_CLIENT  N/A

Stock dmesg:
https://pastebin.com/2t2jwLdf

Stock Dumps:
https://pastebin.com/LDLxSWX3

Installation via SSH (does not void your warranty):
1.  -----UNLOCK SSH-----
1.1 Set computer IP to DHCP mode, load 'http://10.168.1.1/cgi-bin/luci' in
    your browser. Password is 'admin'.
1.2 Click the "备份且导出" (backup and export) button, and download the
    config file.
1.3 Open the downloaded file with 7zip, navigate to '/etc/config/'.
1.4 Edit the file './system'. Change the '0' into '1' under
    "config sys 'ssh'".
1.5 Save the file.
1.6 Upload the file by clicking the "导入且恢复" (import and recover)
    button. The router will automatically reboot.
2.  -----FLASH THE OPENWRT FIRMWARE-----
2.1 Use any scp tool to upload the 'sysupgrade' firmware to the '/tmp/'
    folder to your router. It should be root@10.168.1.1 and the password
    is 'admin'.
2.2 SSH into the router, also root@10.168.1.1 and the password is 'admin'.
2.3 **IMPORTANT** Type command 'dd if=/dev/mtd3 of=/tmp/firmware.bin', to
    backup the stock firmware. Since the OEM does not provide firmware
    download on their website, this is the only way to get it.
2.3 **ALSO IMPORTANT** Use any scp tool to download your backed-up stock
    firmware from '/tmp/' to your local drive. Then you'd better use a hex
    reading tool to have a rough look at it to make sure nothing is
    corrupt. Or u can just back up again and cross check the MD5.
2.4 Type command 'mtd write /tmp/XXX.bin firmware', and it should flash
    the firmware.
2.5 Verify that nothing went wrong. If you're confident, type 'reboot' and
    reboot the router.

Revert to stock firmware:
1.  load stock firmware using mtd (make sure u have a backup).

Signed-off-by: Ray Wang <raywang777@foxmail.com>
2022-04-22 11:05:00 +08:00
config uml: make use of 'rootfs-part' feature 2022-02-14 18:29:30 +08:00
include Merge Mainline 2022-04-14 10:34:23 +08:00
LICENSES LICENSE: sync with upstream 2021-02-16 14:19:09 +08:00
package ramips: add support for BOLT! Arion 2022-04-22 11:01:09 +08:00
scripts Merge Mainline 2022-04-14 10:34:23 +08:00
target ramips: add support for OrayBox X3A 2022-04-22 11:05:00 +08:00
toolchain toolchain: musl: Update to version 1.2.3 2022-04-14 10:30:51 +08:00
tools Merge Mainline 2022-04-14 10:34:23 +08:00
.gitattributes fix permisson 2019-08-16 15:09:42 +08:00
.gitignore toolchain: add a version that can be bumped to force toolchain/target rebuild 2021-11-19 23:58:57 +08:00
BSDmakefile build: use SPDX license tags 2021-02-06 12:07:10 +08:00
Config.in build: scripts/config - update to kconfig-v5.14 2022-02-24 11:35:03 +08:00
CONTRIBUTED.md CONTRIBUTED: add JetBrains logo 2021-12-23 11:35:12 +08:00
COPYING LICENSE: sync with upstream 2021-02-16 14:19:09 +08:00
feeds.conf.default Merge Mainline 2021-06-15 23:45:52 +08:00
Makefile toolchain: add a version that can be bumped to force toolchain/target rebuild 2021-11-19 23:58:57 +08:00
README.md README.md: add matrix group 2022-03-15 17:09:39 +08:00
rules.mk Merge Mainline 2021-12-01 00:15:25 +08:00

logo

Project ImmortalWrt

ImmortalWrt is a fork of OpenWrt, with more packages ported, more devices supported, better performance, and special optimizations for mainland China users.
Compared the official one, we allow to use hacks or non-upstreamable patches / modifications to achieve our purpose. Source from anywhere.

Default login address: http://192.168.1.1 or http://immortalwrt.lan, username: root, password: password.

Development

To build your own firmware you need a GNU/Linux, BSD or MacOSX system (case sensitive filesystem required). Cygwin is unsupported because of the lack of a case sensitive file system.

Requirements

To build with this project, Ubuntu 18.04 LTS is preferred. And you need use the CPU based on AMD64 architecture, with at least 4GB RAM and 25 GB available disk space. Make sure the Internet is accessible.

The following tools are needed to compile ImmortalWrt, the package names vary between distributions.

  • Here is an example for Ubuntu users:

    • Method 1:

      Setup dependencies via APT
      sudo apt update -y
      sudo apt full-upgrade -y
      sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
        bzip2 ccache cmake cpio curl device-tree-compiler ecj fastjar flex gawk gettext gcc-multilib g++-multilib \
        git gperf haveged help2man intltool lib32gcc1 libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
        libmpc-dev libmpfr-dev libncurses5-dev libncursesw5 libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
        mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip python3-ply \
        python-docutils qemu-utils re2c rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \
        vim wget xmlto xxd zlib1g-dev
      
    • Method 2:

      curl -s https://build-scripts.immortalwrt.eu.org/init_build_environment.sh | sudo bash
      
  • You can also download and use prebuilt container directly:
    See #Quickstart - Build image via OPDE

Note:

  • For the for love of god please do not use ROOT user to build your image.
  • Using CPUs based on other architectures should be fine to compile ImmortalWrt, but more hacks are needed - No warranty at all.
  • You must not have spaces in PATH or in the work folders on the drive.
  • If you're using Windows Subsystem for Linux (or WSL), removing Windows folders from PATH is required, please see Build system setup WSL documentation.
  • Using macOS as the host build OS is not recommended. No warranty at all. You can get tips from Build system setup macOS documentation.
    • As you're building ImmortalWrt, patching or disabling UPX tools is also required.
  • For more details, please see Build system setup documentation.

Quickstart

  • Method 1:

    1. Run git clone -b <branch> --single-branch https://github.com/immortalwrt/immortalwrt to clone the source code.
    2. Run cd immortalwrt to enter source directory.
    3. Run ./scripts/feeds update -a to obtain all the latest package definitions defined in feeds.conf / feeds.conf.default
    4. Run ./scripts/feeds install -a to install symlinks for all obtained packages into package/feeds/
    5. Run make menuconfig to select your preferred configuration for the toolchain, target system & firmware packages.
    6. Run make to build your firmware. This will download all sources, build the cross-compile toolchain and then cross-compile the GNU/Linux kernel & all chosen applications for your target system.
  • Method 2:

    Build image via OPDE
    • Pull the prebuilt container:

      docker pull immortalwrt/opde:base
      # docker run --rm -it immortalwrt/opde:base
      
    • For Linux User:

      git clone -b <branch> --single-branch https://github.com/immortalwrt/immortalwrt && cd immortalwrt
      docker run --rm -it \
          -v $PWD:/openwrt \
        immortalwrt/opde:base zsh
      ./scripts/feeds update -a && ./scripts/feeds install -a
      
    • For Windows User:

      1. Create a volume 'immortalwrt' and clone ImmortalWrt source into volume.
      docker run --rm -it -v immortalwrt:/openwrt immortalwrt/opde:base git clone -b <branch> --single-branch https://github.com/immortalwrt/immortalwrt .
      
      1. Enter docker container and update feeds.
      docker run --rm -it -v immortalwrt:/openwrt immortalwrt/opde:base
      ./scripts/feeds update -a && ./scripts/feeds install -a
      
      • Tips: ImmortalWrt source code can not be cloned into NTFS filesystem (symbol link problem during compilation), but docker volume is fine.
    • Proxy Support:

      docker run --rm -it \
        -e   all_proxy=http://example.com:1081 \
        -e  http_proxy=http://example.com:1081 \
        -e https_proxy=http://example.com:1081 \
        -e   ALL_PROXY=http://example.com:1081 \
        -e  HTTP_PROXY=http://example.com:1081 \
        -e HTTPS_PROXY=http://example.com:1081 \
        -v $PWD:/openwrt \
        immortalwrt/opde:base zsh
      

      Recommand http rather socks5 protocol

      IP can not be localhost or 127.0.0.1

    • For Windows User, binary is still in volume. It can be copied to outside via followed command:

      docker run --rm -v <D:\path\to\dir>:/dst -v openwrt:/openwrt -w /dst immortalwrt:base cp /openwrt/bin /dst
      

      Make sure D:\path\to\dir has been appended in File Sharing.

The main repository uses multiple sub-repositories to manage packages of different categories. All packages are installed via the ImmortalWrt package manager called opkg. If you're looking to develop the web interface or port packages to ImmortalWrt, please find the fitting repository below.

Support Information

For a list of supported devices see the OpenWrt Hardware Database

Documentation

Support Community

License

ImmortalWrt is licensed under GPL-3.0-only.