Yaks in need of shaving
James Calligeros edited this page Apr 7, 2023
·
23 revisions
Pages 66
Project related:
Platform documentation:
For users:
For developers:
Clone this wiki locally
This page is a list of miscellaneous tasks that need to be done, but may have been de-prioritised in order to focus on frying bigger fish. Most of these tasks will be low stakes and low effort, making them good places to start for newcomers to kernel development or Free Software in general.
If you decide to take up any of these tasks, please update the task's status to avoid duplicate work. Reach out on #asahi-dev if you have
any questions or are in need of assistance.
| Task | Status | Description | Contact |
|---|---|---|---|
| hwmon driver | Started | The SMC reports data from many thermal and power sensors in these machines. We need a driver for the hwmon subsystem to retrieve these values in userspace. There are already multiple drivers that talk to the SMC to draw inspiration from, so this shouldn't be too difficult. MBA-M1 version available: 100 Temp sensors, 34 Current sensors, 28 Voltage sensors. Example of output from sensors cmd: https://tpaste.us/pn7g. 2023-02-11 : new version with label per key from the DT: Branch (based on asahi-6.1.2): https://github.com/jfbortolotti/linux/commits/hwmon_smc_6.1-2_dt_w_label Commit: https://github.com/jfbortolotti/linux/commit/dac5c2b060d3201ee3de26da64a0c2ba3c36dca1 Patch: https://github.com/jfbortolotti/linux/commit/dac5c2b060d3201ee3de26da64a0c2ba3c36dca1.patch. Feedback welcome :) |
marcan jeffmiw |
| SSM3515 driver | Unclaimed | For speaker support on the iMac, we need a driver for the SSM3515 speaker amp part. Pretty much the driver only needs to set the volume, request a power-up of all the relevant circuitry inside the chip and set the sample format on the I2S bus while having the right interface of a codec driver in the ALSA System on Chip framework. The work will mostly consist of cannibalizing the boilerplate from an existing codec driver and filling in the specifics of the register map of the part in question. All in all I would call it dull/bureaucratic work, so choose it only if you have some special interest in it, and also have access to an iMac to test on. I (povik) will be happy to consult it. | povik |
| Extend tipd driver | Unclaimed | Add support to reset other Apple Silicon machines, and to enable serial, to tipd. On the Macs, some parts of the USB specification are implemented by (undocumented) CD321x chips, similar to TPS65982. Apple added some debugging features to their Type-C ports, and if we want to make use of those when running Linux on an M1/M2 host for development (connected to another M1/M2 machine being the target of experimentation), we need to extend the tipd driver. |
suggested by sven |
| Bluetooth suspend | Unclaimed | Currently, when suspending and then resuming Bluetooth breaks. This is either an issue with the way hci_bcm4377 uses the bluetooth suspend API or we are missing some special vendor-specific commands before suspend or after resume. It's probably possible to figure this out without making the hypervisor survive a full suspend/resume cycle by using Apple's PacketLogger which is part of the "Additional Tools for XCode" to look for additional commands. It's probably also a good idea to compare how hci_bcm4377 suspend works to other Bluetooth drivers since it's also possible that it's just misusing some API that gets the device stuck in a wrong state. | sven |
| Psychoacoustic bass plugin (LADSPA/LV2) | Unclaimed | To protect the speakers on the laptops from overexcursion, it is necessary to run a high pass filter which cuts out bass frequencies. This is true of virtually all microspeakers. We get around this by observing that the human brain will faithfully reconstruct missing bass frequencies so long as their harmonics are audible. There is currently no LSP plugin which does this, so one needs to be created. The plugin must take an incoming stereo signal and amplify the harmonics of anything below a configurable frequency at a configurable gain. The easiest and most performant way to do this would probably be a series of biquads, however implementation details are up to you so long as it's fast and as light as possible on the CPU. This Mathworks page describes what needs to happen in more detail. The plugin should be developed for eventual inclusion in the Linux Studio Plugins project, as per our upstream-first policy. LV2 is the preferred SDK. This is a great little project for an applied maths/CS student. | chadmed |
Wiki for the Asahi Linux project: https://asahilinux.org/