NixOS on ARM/ODROID-HC4: Difference between revisions

imported>Erdnaxe
SATA not working
Pigs (talk | contribs)
m Add category
 
(8 intermediate revisions by 2 users not shown)
Line 8: Line 8:
|-
|-
!Architecture
!Architecture
|ARMv7
|AArch64
|-
|-
!Bootloader
!Bootloader
Line 14: Line 14:
|-
|-
!Boot options
!Boot options
|SD (SATA?)
|microSD (SATA?)
|}
|}
</div>
</div>
Line 45: Line 45:
=== NixOS installation ===
=== NixOS installation ===


# First follow the [[NixOS_on_ARM#Installation|generic installation steps]] to get the '''21.05 (Latest kernel)''' installer image.
# First follow the [[NixOS_on_ARM#Installation|generic installation steps]] to get the latest stable installer image.
# Uncompress the .zst file. One may use the <code>unzstd</code> command (equivalent to <code>zstd -d</code>) on supported machines. The zstd commands can be accessed from the <code>zstd</code> package.
# Uncompress the .zst file. One may use the <code>unzstd</code> command (equivalent to <code>zstd -d</code>) on supported machines. The zstd commands can be accessed from the <code>zstd</code> package.
# Patch this image (.img file) with U-Boot for Odroid HC4. <syntaxhighlight lang="bash">
# Patch this image (.img file) with U-Boot for Odroid HC4. <syntaxhighlight lang="bash">
# Clone content of pull request https://github.com/NixOS/nixpkgs/pull/101454 and build
# Clone content of samueldr's wip/odroidc4 branch, edit the defconfig file, and build
git clone https://github.com/arapov/nixpkgs --depth 1 -b hardkernel && cd nixpkgs
git clone https://github.com/samueldr/nixpkgs --depth 1 -b wip/odroidc4 && cd nixpkgs
test "$(uname)" '==' 'Darwin' && sed -i '' 's/defconfig = "odroid-c4_defconfig"/defconfig = "odroid-hc4_defconfig"/' pkgs/misc/uboot/default.nix || sed -i 's/defconfig = "odroid-c4_defconfig"/defconfig = "odroid-hc4_defconfig"/' pkgs/misc/uboot/default.nix
nix-build -I "nixpkgs=$PWD" -A pkgsCross.aarch64-multiplatform.ubootOdroidC4
nix-build -I "nixpkgs=$PWD" -A pkgsCross.aarch64-multiplatform.ubootOdroidC4
sudo dd if=result/u-boot.bin of=PATH/TO/nixos-sd-image-21.05.XXXX.XXXXXXXX-aarch64-linux.img  conv=fsync,notrunc bs=512 seek=1
sudo dd if=result/u-boot.bin of=PATH/TO/nixos-sd-image-21.05.XXXX.XXXXXXXX-aarch64-linux.img  conv=fsync,notrunc bs=512 seek=1
Line 55: Line 56:
# Flash the modified SD image file (.img) to a microSD card. '''This will erase all the data on the card!'''
# Flash the modified SD image file (.img) to a microSD card. '''This will erase all the data on the card!'''


== Known Problems ==
== Known issues ==


=== SATA is not working ===
=== Fan doesn't work by default ===
You need to use software fan control (via <code>fancontrol</code>) for this.
You may refer to [[https://github.com/NixOS/nixos-hardware/blob/master/hardkernel/odroid-hc4/default.nix nixos-hardware Odroid HC4 module]] for <code>fancontrol</code> configuration.


SATA is working on Armbian with mainline kernel and u-boot but not on NixOS 21.05: lspci returns nothing.
== No HDMI audio by default ==
WIP
 
After enabling ALSA you should see a sound card named "ODROID-HC4". Audio is not correctly routed by default so you might need to open alsa-mixer and change:
* <code>FRDDR_A SINK 1 SEL</code> to <code>OUT 1</code>
* <code>FRDDR_A SRC 1 EN</code> to on
* <code>TDMOUT_B SRC SEL</code> to <code>IN 0</code>
* <code>TOHDMITX</code> to on
* <code>TOHDMITX I2S SRC</code> to <code>I2S B</code>
 
After these changes, <code>speaker-test -c 2</code> should output white noise.


== Resources ==
== Resources ==
Line 67: Line 78:
* [https://github.com/considerate/nixos-odroidhc4/ NixOS configuration for the ODROID HC4 microcomputer by considerate]
* [https://github.com/considerate/nixos-odroidhc4/ NixOS configuration for the ODROID HC4 microcomputer by considerate]
* [https://www.armbian.com/odroid-hc4/ Armbian Odroid HC4]
* [https://www.armbian.com/odroid-hc4/ Armbian Odroid HC4]
* [https://u-boot.readthedocs.io/en/latest/board/amlogic/odroid-c4.html U-Boot for Odroid C4 documentation]
[[Category:NixOS on ARM]]