Repository navigation
Conversation
e0b6ba1 to
a5b92d1
Compare
A different platform from crown: Android 9 with Treble and enforcing SELinux, rooted in place by saiyaku-athena's zip (INSTALL=running: install-system.sh writes /system/hassmic and patches the vendor policy), the front end inside the audio HAL (OpenSL ES, as crown), a TAS5805m amplifier, a TCS3400 light sensor. devices/athena, docs/re-athena.md. What the platform needed: - the libc's accept/accept4/connect fail with EBADF (netd's fwmarkd denied on su sockets: sepolicy rule; net_accept, net_connect_fd and libcurl's already-connected socket stay as workarounds) - Wi-Fi through Android 9's IWifiManager (package name argument, ParceledListSlice) in wifictl.dex, run as uid system - ringbar.dex builds the SurfaceControl through its Builder on SDK >= 26 - IAudioService's transaction numbers differ on Android 9: setStreamVolume 7, getStreamMaxVolume 14 (the volume keys and Music Assistant's volume did nothing before) - the light sensor's lux from the raw channels as stock's virtual_als does (lux.h) - speaker gain on the TAS5805m's digital volume, up to +9 dB (listened to: a rap track's bass clips above) - Sendspin: unpaired sessions are closed when "Music Assistant without pairing" changes - Drop In: a quiet room's noise no longer counts as the far end talking (NEAR_MIN_DB, far_voice) - "Download from Amazon" through the fireosdhaservice binder service Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…r's second Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…s its reboot Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…d-to-reset Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The driver is named gen2 (wlan_mt76x3_sdio) but its receive path is gen4m's, so hassmic_rcpi4m.c runs with its 32-bit defaults. The kernel has no patch_text and read-only module text: the module falls back to set_memory_rw (kallsyms) and a write under stop_machine. CONFIG_MODVERSIONS is on: devices/athena/Module.symvers carries the kernel's CRCs (read out of boot.img's Image), which the Makefile copies into the kernel tree. Tested on a Show 8 2nd gen: RCPI 120 for unicast (0x14009), 129 for broadcasts, the motion sensor switched on when someone walked past. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…r Wi-Fi motion Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Kiosk Satellite (the user's choice of app; docs/kiosk-satellite.md) shows dashboards on the Echo Shows while hassmic stays the voice satellite. Nothing happens unless the model's device.conf names the app (KIOSK_PACKAGE): - main.sh: kiosk_helper opens the app once per boot and keeps its update helper running as the shell user (never root), asked again every 5 minutes; kiosk_grants gives it the permissions it would ask a person for (never the microphone); rotation_lock puts Android's rotation settings back (the app flipped the screen by itself) - lockdown.sh: setting kiosk_internet (default on) lets that uid out to the internet with one rule; INPUT TCP 2324 (its web page) and 6053 (its ESPHome API) from private addresses only (docs/SECURITY.md, DEVELOPMENT.md, CLAUDE.md say so) - the guided setup offers Simple Keyboard (the image has no input method) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The page and hassmic default to on, but state/config only gets the line once the setting was saved, and lockdown.sh looked for kiosk_internet=on: a fresh install never let the app out. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… settings file settings get is a Java process (2 s): at every 10 s portrait showed for up to 15 s after the app started. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Hey, just wandering. Was there a reason you deleted this? |
|
Tested on an Echo Show 5 1st gen (checkers): hassmic + Kiosk Satellite work together 🎉 Thanks for this! I put it on my Show 5 (H23K37) yesterday and it runs nicely: hassmic is the voice satellite, Kiosk Satellite shows the dashboard. What I ran
Working
Two changes checkers needed (same as crown)
Rotation: The Show 5's panel is 480×960 (portrait), and Kiosk Satellite turned the screen upright. system/accelerometer_rotation=0 system/user_rotation=1 in ANDROID_SETTINGS keeps it in landscape, the right way up on this unit, and rotation_lock holds it. Notes from coming from LineageOS (not the usual path, in case they help):
|
|
Theres no point on this end anymore:
One of the shitty things of MIT is stuff like this. That dev has way more traction, they're stubborn and difficult to deal with and didnt even mention your contribution to it all @Gamer92000. A simple shout out would have sufficed, but thats the way it goes these days. Sorry dude. |
|
I still have it local, ill reupload and you can pull whatever you want. |
Draft, stacked on #33 and the athena PR. This branch contains their commits and one more: review only the last commit (
Kiosk Satellite next to hassmic on the screen models, ...).Kiosk Satellite is an app that shows dashboards on the Echo Show's screen; hassmic stays the voice satellite. This is the code that makes the two work together on crown and athena, split out of the model PRs as asked, and nothing else. Everything is optional: nothing happens unless a model's
device.confnames the app (KIOSK_PACKAGE), and the app itself is the user's choice, installed by hand.What it does (
docs/kiosk-satellite.md)main.sh:kiosk_helperopens the app once per boot and keeps its update helper running, as the unprivileged shell user and never root;kiosk_grantsgives it the permissions it would otherwise ask a person for, never the microphone;rotation_lockputs Android's rotation settings back (the app flipped the screen by itself, and the Show has no accelerometer).lockdown.sh: new settingkiosk_internet(default on, page only, not exported) lets that app's uid reach the internet with one rule, for its updates and the pages it shows; and INPUT TCP 2324 (its web page) and 6053 (its ESPHome API) from private addresses only.Security, so it is not a surprise. This changes two documented firewall rules, and I updated
docs/SECURITY.md,DEVELOPMENT.mdandCLAUDE.mdto say so:KIOSK_PACKAGEis set.Checked. Every model builds with
STUBS=1,make host,make unitpass. On a real Show 8 2nd gen the app is opened at boot, its update helper starts, and the app updated itself from Home Assistant; the crown side was tried on a Show 8 1st gen. Not tried: the keyboard install in the guided setup on a clean device.🤖 Generated with Claude Code