Just for the reference, I was able to successfully use 32GB LRDIMM 1866MHz modules in the Foxconn server. The server works fine even with just 1 DIMM when 2 CPUs are present. Right now, I have 2 DIMMs (1 per CPU).
The second SFP+ seems to be missing all the electronics (even leds are not soldered). It is not detected by OS.
That's amazing news. Could you please share the steps how you patched it?
I was doing some patching myself, but the only things I was able to enable were vMedia and some BMC setting such as NTP.
Rough steps which I have done (on Ubuntu 19.04):
0) Install required packages
Code:
root@Linux# apt install git build-essential zlib1g-dev liblzma-dev python-magic bsdmainutils flashrom binwalk
1) Read the BMC flash with flashrom (i have CH341 SPI flash reader/writer)
Code:
root@Linux# flashrom --programmer ch341a_spi -c "MX25L12835F/MX25L12845E/MX25L12865E" -r foxconn-purus_bmc-0.0.65535.bin
flashrom on Linux 5.0.0-29-generic (x86_64)
flashrom is free software, get the source code at https://flashrom.org
Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found Macronix flash chip "MX25L12835F/MX25L12845E/MX25L12865E" (16384 kB, SPI) on ch341a_spi.
Reading flash... done.
2) Binwalk should show us contents of the BMC flash file:
Code:
root@Linux# binwalk foxconn-purus_bmc-0.0.65535.bin
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
111052 0x1B1CC U-Boot version string, "U-Boot 1.2.0 (Mar 23 2012 - 17:57:52) Avocent (0.0.24) Purus-PanguA-8MB/112MB"
112208 0x1B650 CRC32 polynomial table, little endian
262144 0x40000 JFFS2 filesystem, little endian
1048576 0x100000 uImage header, header size: 64 bytes, header CRC: 0x7977C726, created: 2012-03-23 10:02:45, image size: 1690327 bytes, Data Address: 0x40008000, Entry Point: 0x40008000, data CRC: 0xC37ACFDC, OS: Linux, CPU: ARM, image type: OS Kernel Image, compression type: gzip, image name: "arm-linux"
1048640 0x100040 gzip compressed data, maximum compression, has original file name: "vmlinux.bin", from Unix, last modified: 2012-03-23 10:02:44
3145728 0x300000 Squashfs filesystem, little endian, version 3.1, size: 11684842 bytes, 1691 inodes, blocksize: 131072 bytes, created: 2012-04-16 03:10:30
3) get Firmware Mod Kit to extract and rebuild BMC after edits
Code:
root@Linux# git clone https://github.com/rampageX/firmware-mod-kit.git
root@Linux# cd firmware-mod-kit
4) Copy BMC ROM file into the folder firmware-mod-kit
5) extract firmware (extracted firmware will be present in fmk subdirectory)
Code:
root@Linux# ./extract-firmware.sh foxconn-purus_bmc-0.0.65535.bin
6) go to folder with BMC WebGUI files:
Code:
root@Linux# cd fmk/rootfs/usr/local/www
7) I have uncommented some lines corresponding to NTP (Time) and vMedia in file bmctree.html which is used to generate GUI menu.
8) the subdirectory software contains JAVA files for vMedia and vKVM functions. Foxconn Purus BMC was missing files for several platforms (such as Linux64...). I have copied them from extracted Gigabyte GA-7PESH2 BMC ROM as this board shares the same BMC chip (AST2300) and same vendor of BMC software (Avocent).
9) repack the edited firmware (you need to be in base firmware-mod-kit folder). The output file is "fmk/new-firmware.bin"
Code:
root@Linux# ./build-firmware.sh
10) flash the modified BMC file:
Code:
root@Linux# flashrom --programmer ch341a_spi -c "MX25L12835F/MX25L12845E/MX25L12865E" -w new-firmware.bin
You can download my edited BMC file with vMedia and NTP enabled here:
MEGA
!!!ATTENTION: Backup your original BMC first. I am not 100% sure if this file will work on your board. Works on mine