imsd, media: aim call audio at logind's seat0 session, not an account named user
imsd-media defaulted AUDIO_USER to `user`, postmarketOS's default account name, and with no such account a call had no audio on the phone and noise at the far end, the message only in imsd-media's stderr, at each call. A field user found it by trial (alyx report 14, 2026-09-20; ims ledger F14). Have imsd, as packaged (root, on the system bus), resolve the session from logind when a call's media starts — the user session active on seat0 (a greeter is not one) when it has a PipeWire socket — and hand it to imsd-media as AUDIO_USER; set in imsd's own environment to an account's name, AUDIO_USER pins that account instead. imsd as packaged (root, on the system bus) logs the resolution at start, before the first call, and when a call's media starts. No session is an empty AUDIO_USER. imsd-media started without the variable at all keeps `user`: that is an imsd older than 0.3.10, still running while an upgrade replaces the helper under it, whose calls would otherwise be silent until the restart, or a hand run. Tested on the dev phone (KPN) in builds of this series; not every path has run there.
This commit is contained in:
parent
7eb2deae0c
commit
0a91050635
3 changed files with 108 additions and 23 deletions
|
|
@ -146,8 +146,8 @@ busctl --user call net.catcrafts.IMS1 /net/catcrafts/IMS1 net.catcrafts.IMS1 Get
|
|||
|
||||
On a phone the daemon runs as root on the system bus (policy in
|
||||
`packaging/net.catcrafts.IMS1.conf` — it grants the postmarketOS default
|
||||
account `user` access; adjust it alongside `AUDIO_USER` if your session
|
||||
account is named differently), started by `packaging/imsd.service`
|
||||
account `user` access; adjust it if your session account is named
|
||||
differently), started by `packaging/imsd.service`
|
||||
after `packaging/ims-pdn-up.sh` has brought up the ims PDN through
|
||||
ModemManager. The bring-up never lets the ims PDN become the phone's IPv6
|
||||
default route: the PDN's router advertisement is not accepted as a default
|
||||
|
|
@ -354,7 +354,7 @@ its own `retry-after`).
|
|||
| Variable | Default | Meaning |
|
||||
|---|---|---|
|
||||
| `MIC`, `PLAY` | `1`, `1` | uplink mic capture / downlink playout via PipeWire |
|
||||
| `AUDIO_USER` | `user` | desktop user whose PipeWire session carries call audio (postmarketOS default account) |
|
||||
| `AUDIO_USER` | *(auto)* | account whose PipeWire session carries call audio. imsd sets it for each call from logind: the user session active on seat0 (`loginctl show-seat seat0`, a greeter does not count) when it has a `/run/user/<uid>/pipewire-0` socket. Set in imsd's own environment it pins an account instead. imsd as packaged (root, on the system bus) logs the resolution at start and when a call's media starts (`audio session: …`), imsd-media once per call. imsd-media started without the variable at all (by an imsd older than 0.3.10 while an upgrade replaces it, or by hand) tries the account `user`, its old default. |
|
||||
| `GAIN`, `PLAY_GAIN` | `10`, `1.0` | uplink / downlink gain |
|
||||
| `AMR_MODE` | `2` | AMR-WB encoder mode (0–8) |
|
||||
| `DTX` | `0` | encoder discontinuous transmission |
|
||||
|
|
|
|||
Loading…
Reference in a new issue