v1.1.0 β Ethernet (LAN9500A) works π
[1.1.0] - 2026-06-22
Added
-
Ethernet (LAN9500A) now works π β the soldered on-board SMSC LAN9500A
USB-ethernet enumerates and carries traffic. Two kernel changes did it:0006-usb-ehci-omap-steelhead-keep-ethernet-port-alive-ulpβ steelhead
host-init inehci-omap: INSNREG01 burst thresholds, a ULPI Function-Control
soft reset of the USB3320 PHY beforeusb_add_hcd(), and
usb_disable_autosuspend()on the root hub so the idle port is not
clock-gated away.0008-mfd-omap-usb-host-steelhead-UHH-HOSTCONFIG-connectβ program
UHH_HOSTCONFIGto the vendor's0x11c(setP1_CONNECT_STATUS, leave
APP_START_CLKclear) so the EHCI latches the port-1 connect. Measured
mainline default was0x1c; the stock Android 3.0 kernel uses0x11c.
The long-standing "ethernet is dead hardware" verdict was wrong β the stock
kernel enumerates the same chip on this unit, proving the HW is fine and the bug
was ours. Verified on hardware (#8 kernel):eth0(0424:9e00βsmsc95xx)
links at 100 Mbps/Full and passes bidirectional traffic β 0% packet loss over a
direct cable, zero rx/tx/CRC/frame errors after ~660 MB moved. Throughput
~30β60 Mbps (USB2 / single-core OMAP4 bound, not a link fault). Reach the device
over ethernet with the persistenteth-directNetworkManager profile
(static10.42.0.2/24). -
Kernel patch
0007-clk-ti-composite-implement-divider-round-set-rateβ OMAP4
ti,composite-clocknodes (gate + divider) had stubround_rate/set_rate
returning-EINVAL, so anyclk_set_rate()on them failed. Delegated both to
ti_clk_divider_ops(asrecalc_ratealready did). Fixes the TAS5713
amplifier MCLK:dpll_per_m3x2_cknow sets to 61.44 MHz β
auxclk1_ck= 12.288 MHz (256 Γ 48 kHz). Verified on hardware (#4 kernel):
clock rates correct, ALSA card 0NexusQ-Speakerregisters cleanly, no
couldn't set dpll_per_m3x2_ckerror. -
CONFIG_SRAM=yin the defconfig (OMAP4 on-chip SRAM driver). -
Tooling:
scripts/regen-dts-patch.sh(regenerate patch 0003 from the working
DTS) andscripts/extract-and-repack.sh(pull kernel+DTB from the build
chroot pkgdir and repack a partition-sized boot image β a fast path that skips
the rootfs build). -
Build fix: the recurring
abuild create_apks"Permission denied" on
/home/pmos/packages//pmos/armv7/...apkis fixed. On a reusednexusq-workdir
volume$WORK/packageswas owned by the containerpmos(uid 1000) while
abuild inside the chroot runs as uid 12345, so it could not write its.apk.
docker-build.shPhase 7a nowchowns$WORK/packagesto 12345 before the
build, solinux-google-steelhead-*.apkis created cleanly andpmbootstrap installruns.extract-and-repack.shis kept as a fast path, no longer a
required workaround. -
Build fix: clearing the armv7 ccache out-of-band leaves its directory owned
by uid 1000, so abuild inside the chroot (uid 12345) then hitsccache: error: Permission deniedatmake olddefconfig.docker-build.shPhase 7a now also
chowns$WORK/cache_ccache_armv7to 12345 (alongside$WORK/packages).
Changed
- DTS: delete the upstream
cpu@1node to match the single-core build
(CONFIG_SMP=n). Clears the early-DTnodes greater than max cores 1warning
and the resulting kernel taint (was 512, now 0). Re-add together with the
deferred OMAP4460 SMP / CPU1 bring-up. Patch 0003 regenerated accordingly. - Device root password is now read at runtime from a gitignored
.nexus_pw
(no hard-coded credential in the SSH/flash helpers).
Known limitations
- Rootfs image build (
pmbootstrap install, Phase 9) currently fails on a
device-google-steelheadpost-install step (exit 127); the kernel.apkand
boot image build fine, so kernel/DTB iteration is unaffected. Reflash boot only.
Install: flash nexusq-boot-v1.1.0.img to the 8 MB boot partition
(dd β¦ of=/dev/mmcblk0p9 conv=fsync from a running system, or fastboot flash boot). The root filesystem is unchanged since v0.1.0 β reuse
nexusq-rootfs-v0.1.0-sparse.img. The boot image is kernel #8; it prints the
UHH_HOSTCONFIG values once at boot (diagnostic) and is functionally identical to
the cleaned 0008 source patch in this tag. sha256 in sha256sums.txt.
Note: the rootfs image build (pmbootstrap install, Phase 9) currently fails on
a device post-install step; the kernel/boot image build is unaffected.
Full Changelog: v0.1.0...v1.1.0