amazon-checkers: enable wifi, fix crashes

I've also added myself as a maintainer everywhere as I forgot to do that
in the initial MR.

Co-authored-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/7203>
This commit is contained in:
user0-07161 2025-10-15 16:57:48 +02:00 committed by The Friendly Merge Bot
parent 34c32fe958
commit 13649dbb71
No known key found for this signature in database
8 changed files with 293 additions and 20 deletions

View file

@ -1,15 +1,20 @@
# Maintainer: User0 <user0thenyancat@proton.me>
# Reference: <https://postmarketos.org/devicepkg>
pkgname=device-amazon-checkers
pkgdesc="Amazon Echo Show 5 1st Generation"
pkgver=1
pkgver=2
pkgrel=0
url="https://postmarketos.org"
license="MIT"
arch="armv7"
options="!check !archcheck"
# without the firmware package, the kernel seems to look for it for ~2 to ~3 mins,
# therefore putting this in depends and not _pmb_recommends
#
# pulseaudio crashes the kernel
depends="
firmware-amazon-checkers
linux-amazon-checkers
mkbootimg
postmarketos-base
@ -20,6 +25,7 @@ makedepends="devicepkg-dev"
source="
deviceinfo
modules-load.conf
"
build() {
@ -32,4 +38,5 @@ package() {
sha512sums="
6a57608e01fe37118c87fbbc0e4c945661fabee07e50da280944f947d37919e175b6e2161e5c98052ecb9c9553ca20f7884a3bd5fefed37b58e18deba467ba9b deviceinfo
36298b8b278a3bc09ede09680533a54dc68ba265d79c4d701a54375b2be133bd23d133733187637b5a3d4b364be7a0740a9530f117e575866a49bd3229e8c0ef modules-load.conf
"

View file

@ -0,0 +1,7 @@
# This file contains the names of kernel modules that should be loaded at boot time, one
# per line. Lines beginning with "#" are ignored.
# Wi-Fi module
wlan_mt76x8_sdio

View file

@ -0,0 +1,25 @@
# Maintainer: User0 <user0thenyancat@proton.me>
pkgname=firmware-amazon-checkers
pkgver=1
pkgrel=0
pkgdesc="Firmware for Amazon Echo Show 5 (1st Gen)"
url="https://github.com/user0-07161/wifi-firmware-amazon-checkers"
arch="armv7"
license="proprietary"
options="!check !strip !archcheck !spdx !tracedeps pmb:cross-native"
_commit="1531bbbe7b5c22e084605210208d19a54f60054e"
_repository="wifi-firmware-amazon-checkers"
source="$_repository-$_commit.tar.gz::https://github.com/user0-07161/$_repository/archive/$_commit.tar.gz"
builddir="$srcdir/$_repository-$_commit"
package() {
mkdir -p "$pkgdir/usr/lib/firmware"
mv * "$pkgdir"/usr/lib/firmware/
}
sha512sums="
f53713c18db69d62c10a9cdb9e51269134f5b7724b0c0decba53f5bb4c575bf80c2fc741db73de68e89349dbfbaf7440a36d89fc152945dab1b0a44519c2f873 wifi-firmware-amazon-checkers-1531bbbe7b5c22e084605210208d19a54f60054e.tar.gz
"

View file

@ -0,0 +1,36 @@
From 2b81a237b028e63d1e5e26330c97a007db0a2178 Mon Sep 17 00:00:00 2001
From: user0-07161 <user0thenyancat@proton.me>
Date: Wed, 15 Oct 2025 13:14:53 +0200
Subject: [PATCH] Include Wi-Fi Firmware
---
drivers/net/wireless/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
index 8c8edaf..8c74e75 100644
--- a/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -32,6 +32,7 @@ source "drivers/net/wireless/rsi/Kconfig"
source "drivers/net/wireless/st/Kconfig"
source "drivers/net/wireless/ti/Kconfig"
source "drivers/net/wireless/zydas/Kconfig"
+source "drivers/net/wireless/wifimtk/Kconfig"
config PCMCIA_RAYCS
tristate "Aviator/Raytheon 2.4GHz wireless support"
--
diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile
index f00d429..36dad04 100644
--- a/drivers/net/wireless/Makefile
+++ b/drivers/net/wireless/Makefile
@@ -11,6 +11,7 @@ obj-$(CONFIG_WLAN_VENDOR_INTEL) += intel/
obj-$(CONFIG_WLAN_VENDOR_INTERSIL) += intersil/
obj-$(CONFIG_WLAN_VENDOR_MARVELL) += marvell/
obj-$(CONFIG_WLAN_VENDOR_MEDIATEK) += mediatek/
+obj-$(CONFIG_WLAN_VENDOR_MEDIATEK) += wifimtk/
obj-$(CONFIG_WLAN_VENDOR_RALINK) += ralink/
obj-$(CONFIG_WLAN_VENDOR_REALTEK) += realtek/
obj-$(CONFIG_WLAN_VENDOR_RSI) += rsi/
2.51.0

View file

@ -0,0 +1,132 @@
From 2d9ed388316294678a3efa8ae113d54ed32e54a0 Mon Sep 17 00:00:00 2001
From: user0-07161 <user0thenyancat@proton.me>
Date: Wed, 15 Oct 2025 15:15:39 +0200
Subject: [PATCH] add modinst makefile
---
scripts/Makefile.modinst | 41 +++++++++++++++++++++++++
scripts/depmod.sh | 64 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 105 insertions(+)
create mode 100644 scripts/Makefile.modinst
create mode 100755 scripts/depmod.sh
diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst
new file mode 100644
index 0000000..07650ee
--- /dev/null
+++ b/scripts/Makefile.modinst
@@ -0,0 +1,41 @@
+# ==========================================================================
+# Installing modules
+# ==========================================================================
+
+PHONY := __modinst
+__modinst:
+
+include scripts/Kbuild.include
+
+#
+
+__modules := $(sort $(shell grep -h '\.ko$$' /dev/null $(wildcard $(MODVERDIR)/*.mod)))
+modules := $(patsubst %.o,%.ko,$(wildcard $(__modules:.ko=.o)))
+
+PHONY += $(modules)
+__modinst: $(modules)
+ @:
+
+# Don't stop modules_install if we can't sign external modules.
+quiet_cmd_modules_install = INSTALL $@
+ cmd_modules_install = \
+ mkdir -p $(2) ; \
+ cp $@ $(2) ; \
+ $(mod_strip_cmd) $(2)/$(notdir $@) ; \
+ $(mod_sign_cmd) $(2)/$(notdir $@) $(patsubst %,|| true,$(KBUILD_EXTMOD)) && \
+ $(mod_compress_cmd) $(2)/$(notdir $@)
+
+# Modules built outside the kernel source tree go into extra by default
+INSTALL_MOD_DIR ?= extra
+ext-mod-dir = $(INSTALL_MOD_DIR)$(subst $(patsubst %/,%,$(KBUILD_EXTMOD)),,$(@D))
+
+modinst_dir = $(if $(KBUILD_EXTMOD),$(ext-mod-dir),kernel/$(@D))
+
+$(modules):
+ $(call cmd,modules_install,$(MODLIB)/$(modinst_dir))
+
+
+# Declare the contents of the .PHONY variable as phony. We keep that
+# information in a variable so we can use it in if_changed and friends.
+
+.PHONY: $(PHONY)
diff --git a/scripts/depmod.sh b/scripts/depmod.sh
new file mode 100755
index 0000000..122599b
--- /dev/null
+++ b/scripts/depmod.sh
@@ -0,0 +1,64 @@
+#!/bin/sh
+#
+# A depmod wrapper used by the toplevel Makefile
+
+if test $# -ne 3; then
+ echo "Usage: $0 /sbin/depmod <kernelrelease> <symbolprefix>" >&2
+ exit 1
+fi
+DEPMOD=$1
+KERNELRELEASE=$2
+SYMBOL_PREFIX=$3
+
+if ! test -r System.map -a -x "$DEPMOD"; then
+ exit 0
+fi
+
+# older versions of depmod don't support -P <symbol-prefix>
+# support was added in module-init-tools 3.13
+if test -n "$SYMBOL_PREFIX"; then
+ release=$("$DEPMOD" --version)
+ package=$(echo "$release" | cut -d' ' -f 1)
+ if test "$package" = "module-init-tools"; then
+ version=$(echo "$release" | cut -d' ' -f 2)
+ later=$(printf '%s\n' "$version" "3.13" | sort -V | tail -n 1)
+ if test "$later" != "$version"; then
+ # module-init-tools < 3.13, drop the symbol prefix
+ SYMBOL_PREFIX=""
+ fi
+ fi
+ if test -n "$SYMBOL_PREFIX"; then
+ SYMBOL_PREFIX="-P $SYMBOL_PREFIX"
+ fi
+fi
+
+# older versions of depmod require the version string to start with three
+# numbers, so we cheat with a symlink here
+depmod_hack_needed=true
+tmp_dir=$(mktemp -d ${TMPDIR:-/tmp}/depmod.XXXXXX)
+mkdir -p "$tmp_dir/lib/modules/$KERNELRELEASE"
+if "$DEPMOD" -b "$tmp_dir" $KERNELRELEASE 2>/dev/null; then
+ if test -e "$tmp_dir/lib/modules/$KERNELRELEASE/modules.dep" -o \
+ -e "$tmp_dir/lib/modules/$KERNELRELEASE/modules.dep.bin"; then
+ depmod_hack_needed=false
+ fi
+fi
+rm -rf "$tmp_dir"
+if $depmod_hack_needed; then
+ symlink="$INSTALL_MOD_PATH/lib/modules/99.98.$KERNELRELEASE"
+ ln -s "$KERNELRELEASE" "$symlink"
+ KERNELRELEASE=99.98.$KERNELRELEASE
+fi
+
+set -- -ae -F System.map
+if test -n "$INSTALL_MOD_PATH"; then
+ set -- "$@" -b "$INSTALL_MOD_PATH"
+fi
+"$DEPMOD" "$@" "$KERNELRELEASE" $SYMBOL_PREFIX
+ret=$?
+
+if $depmod_hack_needed; then
+ rm -f "$symlink"
+fi
+
+exit $ret
--
2.51.0

View file

@ -1,9 +1,9 @@
# Maintainer: User0 <user0thenyancat@proton.me>
# Reference: <https://postmarketos.org/vendorkernel>
# Kernel config based on: arch/arm/configs/checkers_defconfig
pkgname=linux-amazon-checkers
pkgver=4.9.77
pkgrel=0
pkgrel=1
pkgdesc="Amazon Echo Show 5 1st Generation kernel fork"
arch="armv7"
_carch="arm"
@ -23,24 +23,37 @@ makedepends="
"
_repository="linux-downstream"
_repository_firmware_wifi="firmware-amazon-checkers"
_commit="846c2e61fec7d94feed35e58812bb8b97eb59aab"
_commit_firmware_wifi="ba66f7a1535bda706f67d5becd8d3148523e5eec"
_config="config-$_flavor.$arch"
# NOTE: despite the github namespace, this is *NOT* a mainline kernel!
source="
$pkgname-$_commit.tar.gz::https://github.com/checkers-mainline/$_repository/archive/$_commit.tar.gz
$pkgname-wifi-$_commit_firmware_wifi.tar.gz::https://github.com/user0-07161/$_repository_firmware_wifi/archive/$_commit_firmware_wifi.tar.gz
$_config
0001-Remove-redundant-YYLOC-global-declaration.patch
0002-Fix-solaris-style-flag.patch
0003-Add-missing-kconfig-files.patch
0004-Include-Wi-Fi-Firmware.patch
0005-Add-modinst-Makefile.patch
fix-check-lxdialog.patch
fix-check-lxdialog-makefile.patch
remove-dummy-audio-mmap.patch
"
builddir="$srcdir/$_repository-$_commit"
_outdir="out"
prepare() {
default_prepare
mkdir -p "$builddir/drivers/net/wireless/wifimtk"
cp -rv "$srcdir/$_repository_firmware_wifi-$_commit_firmware_wifi"/* \
"$builddir/drivers/net/wireless/wifimtk/"
ln -sf "$builddir/drivers/net/wireless/wifimtk/config/checkers.config" \
"$builddir/drivers/net/wireless/wifimtk/.config"
. downstreamkernel_prepare
}
@ -53,14 +66,24 @@ build() {
package() {
downstreamkernel_package "$builddir" "$pkgdir" "$_carch" \
"$_flavor" "$_outdir"
unset LDFLAGS
make O="$_outdir" ARCH="$_carch" CC="${CC:-gcc}" \
KBUILD_BUILD_VERSION="$((pkgrel + 1))-postmarketOS" \
INSTALL_MOD_PATH="$pkgdir" INSTALL_MOD_STRIP=1 \
modules_install
}
sha512sums="
68dd148b050277f66ec243e6a129257f1b23b841009258e2be50e0a46208765595f6b4db2b726b243f203c20bddb5e52461e97d2252010b0cb82f07b402fa8ed linux-amazon-checkers-846c2e61fec7d94feed35e58812bb8b97eb59aab.tar.gz
82585dc91763436b55dee7c1d3f522ed059556e2f5c14c6f186efebb7a9388d5632fe4bdf2ad0bba910a867cbe108d69422d4678f374c7b5575ba2023b886cc6 config-amazon-checkers.armv7
f5c87f01a171f69fd8fe1ad93fb896ad9e54be09d18b798ad3692a13409c97e6e0e903ce1a7db78ae7b95ab8f9c3b263f48a53b1b6828972afeac7569f3801e8 linux-amazon-checkers-wifi-ba66f7a1535bda706f67d5becd8d3148523e5eec.tar.gz
92409ede013b6cc3b0effa45e07128539675917f796f063bd236ceba88d8674e67e5eb9f5bd8278dc17d0d6d14f7c62027409df15aa10a6291d834930606b5a3 config-amazon-checkers.armv7
3fa90b7883d66e85e2f7a2d8011643f1a378169269fd8b172185e1179b6862789caadc500fc930f7b32498770d1f0145cf25dfe10022f99db60918bca01ef7e8 0001-Remove-redundant-YYLOC-global-declaration.patch
491879bc492820e608b3604daca24f26187f6e552ec47d358d205118179f89594f9cbb1480ad0d5c7a94126dfe523fd6e1bbb594821431967ee59f6908ebeeea 0002-Fix-solaris-style-flag.patch
0f7c76b206144d78a0f8fb18979f363c008bebbac96e075824c69651d52a2c06c8e5db5060b61033517e4c78d54cb9c446dfa03e1ddfac9e5fb44a6bfdf42265 0003-Add-missing-kconfig-files.patch
ad4fce05db2247c9353afe63f54cfaac54bd96266ffc6572e0e0dfeefe090b90e08ee44e0825e59ee3615b72adcbb4373b6c4e81b2989f170f24394a6d23668c 0004-Include-Wi-Fi-Firmware.patch
2a58983f0f9f955c5219358fa88f1b68cf832e2df4982d40a5e6cbd0cd40470a60f7b1e93c77de15b6a5e9d591ac9f6b329afd04422277b19dfa9f7ce5f26127 0005-Add-modinst-Makefile.patch
182be3c596b9cc267ac108d7cf03fc8c328ccc6b36770800e4dcedea8d1bb65e3f5eacf590c2948f58b1418cc60a1670ba77dde8c259e428d158c31b6e1dbaf5 fix-check-lxdialog.patch
c33fad9de627e72f12e61e728fa1ec53ef15259c7790392a997cc7269e60e45da9534d58851c3b348a1729aaa134d1df305e33546e8a1f3654462f2c3c1d9563 fix-check-lxdialog-makefile.patch
e6f11b7a87c68ad0d9bb85361fe0d99f957e2bcba6c86d314b9ef558b526a7dfd8efcbe7698b686c396ef31f98ae33bd097736ea20f65612755838acb94a03bf remove-dummy-audio-mmap.patch
"

View file

@ -1121,7 +1121,7 @@ CONFIG_DST_CACHE=y
# CONFIG_NET_DEVLINK is not set
CONFIG_MAY_USE_DEVLINK=y
CONFIG_HAVE_CBPF_JIT=y
# CONFIG_MTK_NET_LOGGING is not set
CONFIG_MTK_NET_LOGGING=y
#
# Device Drivers
@ -1433,6 +1433,8 @@ CONFIG_MTK_COMBO_CHIP_MT7668=y
CONFIG_MTK_COMBO_CHIP="MT7668"
CONFIG_MTK_COMBO_PLAT_PATH=""
# CONFIG_MTK_COMBO_COMM is not set
CONFIG_MTK_COMBO_COMM_UART=y
CONFIG_MTK_COMBO_COMM_SDIO=y
CONFIG_MTK_COMBO_BT=y
# CONFIG_MTK_COMBO_ANT is not set
# CONFIG_MTK_COMBO_GPS is not set
@ -1797,6 +1799,12 @@ CONFIG_WLAN_VENDOR_MEDIATEK=y
# CONFIG_WLAN_VENDOR_ST is not set
# CONFIG_WLAN_VENDOR_TI is not set
# CONFIG_WLAN_VENDOR_ZYDAS is not set
#
# wifimtk
#
CONFIG_MTK_WIFI_ONLY=y
CONFIG_MTK_MT_WIFI_CHRDEV=y
# CONFIG_USB_NET_RNDIS_WLAN is not set
#
@ -3198,21 +3206,6 @@ CONFIG_USB_F_FS=y
CONFIG_USB_F_AUDIO_SRC=y
# CONFIG_USB_CONFIGFS is not set
CONFIG_USB_G_ANDROID=y
# CONFIG_USB_ZERO is not set
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_ETH is not set
# CONFIG_USB_G_NCM is not set
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FUNCTIONFS is not set
# CONFIG_USB_MASS_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_PRINTER is not set
# CONFIG_USB_CDC_COMPOSITE is not set
# CONFIG_USB_G_ACM_MS is not set
# CONFIG_USB_G_MULTI is not set
# CONFIG_USB_G_HID is not set
# CONFIG_USB_G_DBGP is not set
# CONFIG_USB_LED_TRIG is not set
# CONFIG_USB_ULPI_BUS is not set
# CONFIG_UWB is not set

View file

@ -0,0 +1,50 @@
remove mmap capability from amazon mt8163 pcm audio driver
For reasons known only to MediaTek, the pcm driver used by most amazon devices
of this era provide a fake zero page address whenever a mmap is attempted.
Naturally, this causes a kernel panic when an audio server like pulseaudio
attempts to mmap the sound device using the fake address. Remove this dummy
page function and remove mmap flags from the driver description so pulse
handles the device correctly.
Verified on amazon-biscuit (Echo Dot 2G) but may also apply to other MT8163
devices like karnak and douglas. MT8127 devices like ford appear to pull this
dummy page trick as well, so a modified patch may work there.
diff --git a/sound/soc/mediatek/mt_soc_audio_8163_amzn/mt_soc_pcm_dl1_i2s0Dl1.c b/sound/soc/mediatek/mt_soc_audio_8163_amzn/mt_soc_pcm_dl1_i2s0Dl1.c
index b68f2fa..afaaba8 100644
--- a/sound/soc/mediatek/mt_soc_audio_8163_amzn/mt_soc_pcm_dl1_i2s0Dl1.c
+++ b/sound/soc/mediatek/mt_soc_audio_8163_amzn/mt_soc_pcm_dl1_i2s0Dl1.c
@@ -124,8 +124,7 @@ static const struct snd_kcontrol_new Audio_snd_I2S0dl1_controls[] = {
static struct snd_pcm_hardware mtk_I2S0dl1_hardware = {
- .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
- SNDRV_PCM_INFO_RESUME | SNDRV_PCM_INFO_MMAP_VALID),
+ .info = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_RESUME),
.formats = SND_SOC_ADV_MT_FMTS,
.rates = SOC_HIGH_USE_RATE,
.rate_min = SOC_HIGH_USE_RATE_MIN,
@@ -1125,15 +1125,6 @@ static int mtk_pcm_I2S0dl1_silence(struct snd_pcm_substream *substream,
return 0;
}
-static void *dummy_page[2];
-
-static struct page *mtk_I2S0dl1_pcm_page(struct snd_pcm_substream *substream,
- unsigned long offset)
-{
- pr_debug("%s\n", __func__);
- return virt_to_page(dummy_page[substream->stream]);
-}
-
static int mtk_I2S0dl1_reboot(struct notifier_block *nb,
unsigned long action, void *data)
{
@@ -908,7 +899,6 @@ static struct snd_pcm_ops mtk_I2S0dl1_ops = {
.pointer = mtk_pcm_I2S0dl1_pointer,
.copy = mtk_pcm_I2S0dl1_copy,
.silence = mtk_pcm_I2S0dl1_silence,
- .page = mtk_I2S0dl1_pcm_page,
};
static struct snd_soc_platform_driver mtk_I2S0dl1_soc_platform = {