script.bin is a board-specific binary "configuration file" used by Allwinner-specific drivers in the kernel (and also by the LiveSuit flashing program) with information on how to set-up various devices, ports and I/O pins on boards with Allwinner SoCs.
Note: This is only needed for running the legacy ("sunxi") Linux kernel, or kernels provided by the board vendor or Allwinner. For running an upstream (or "mainline") kernel, you should use the included device tree files.
See also: How to modify script.bin
Get bin2fex utility
Get sunxi-boards repository
git clone git://github.com/linux-sunxi/sunxi-boards.git
Identify your fex file from your device page
The .fex file should be clearly listed on your device page under the Manual Build section.
Edit .fex file (optional)
This step is usually not necessary.
The .fex file uses the windows standard .ini format. The entries are described in our FEX guide.
Add Ethernet MAC address
To give your device a persistent MAC address, you need to add the MAC directive to the dynamic section, like such:
[dynamic] MAC = "0123456789AB"
If no dynamic section exists, just add it to the end of the .fex file
/home/user/dir/sunxi-tools/fex2bin <your_device>.fex script.bin
Configure U-Boot to load script.bin
Modern script.bin usage
On more recent BSPs (like for H6), script.bin is folded into devicetree in some weird way. Sunxi-tools has no tool yet to extract this information, as this still needs to be written up. This currently limits/prohibits extracting of script.bin on many modern Allwinner devices.
There seems to be a decent amount of information available in the Allwinner BSP, which, amazingly, uses part of our sunxi-tools code, enough for an enterprising individual to go add the necessary tooling to sunxi-tools.