====== GSoC 2021: Sound Open Firmware project ====== [[:gsoc:google-summer-code-2021|Main GSoC Linux Foundation page: How to apply, deadlines, other workgroups, ...]] ====== Sound Open Firmware ====== Sound Open Firmware is an open source audio DSP firmware and SDK that provides audio firmware infrastructure and development tools for developers who are interested in audio or signal processing on modern DSPs ==== Proposal 1: Add dynamic load module support for SOF ==== Github issues: * https://github.com/thesofproject/sof/pull/1619 * https://github.com/thesofproject/sof/pull/3766#issuecomment-776756378 Code license: GPL-2.0 OR BSD-3-Clause The project is considered successful if the code is accepted into SOF github tree. Mentor: Daniel Baluta ==== Proposal 2: Add support for converting topology binaries generated with TPLG1.0 into TPLG2.0 conf format ==== The goal is to be able to decode existing topology binaries and convert them into the new Topology 2.0 conf format Code license: GPL-2.0 OR BSD-3-Clause The project is considered successful if the code is accepted into SOF github tree. Mentor: Ranjani Sridharan ==== Proposal 3: Loopback implementation using demux component ==== The general idea would be to have an ALSA device where playback stream would be looped back into a capture stream. This can be useful for echo reference or for audio decoding libraries that could offload the decoding part to the DSP. Github issue: https://github.com/thesofproject/sof/issues/3818 Code license: GPL-2.0 OR BSD-3-Clause The project is considered successful if the code is accepted into SOF github tree. Mentor: Iuliana Prodan ==== Proposal 4: Enhance SOF testbench with Linux kernel topology parser ==== Reuse sound/soc/sof/* and re-write the testbench to use ASoC topology parser. Code license: GPL-2.0 OR BSD-3-Clause The project is considered successful if the code is accepted into SOF github tree. Mentor: Seppo Ingalsuo ==== Proposal 5: Add mutiple stream suppport to testbench ==== Add to testbench support for multiple streams (with multiple files I/O PCM, DAI). Code license: GPL-2.0 OR BSD-3-Clause The project is considered successful if the code is accepted into SOF github tree. Mentor: Seppo Ingalsuo ==== Proposal 6: Add mux/demux testing functionality to testbench ==== Add support for testing the mux/demux component in testbench. Code license: GPL-2.0 OR BSD-3-Clause The project is considered successful if the code is accepted into SOF github tree. Mentor: Jaska Uimonen ===== Where to start? ===== Have a look at: * [[https://www.youtube.com/watch?v=vwDoEumA1Mo | Sound Open Firmware introduction]] * [[https://thesofproject.github.io/latest/introduction/index.html| Sound Open Firmware docs]] * [[https://github.com/thesofproject/sof/ | Sound Open Firmware github]] ===== Small ideas to work on to get familiar with the project ===== All the ideas below are just ways of exploring the project. ==== Get SOF binaries ==== * Follow tutorial here [[https://thesofproject.github.io/latest/getting_started/build-guide/build-from-scratch.html | Getting started]] in order to compile Linux kernel, SOF firmware, SOF topologies. ==== Create one Pull Request for the SOF repo ===== * Fork https://github.com/thesofproject/sof.git repo into your github account * Follow instructions here [[https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request | Create a Pull Request]] and learn how to create a PR. * Use checkpatch.pl to find small issues to fix * e.g ./scripts/checkpatch.pl --no-tree --strict -f src/lib/alloc.c * Keep in mind, a commit should fix only one type of error/warnings. If you need to fix multiple problems create multiple commits. * Learn [[https://chris.beams.io/posts/git-commit/ | how to create a good commit message]] ==== Create one patch for the Linux kernel ==== Watch this [[https://www.youtube.com/watch?v=LLBrBBImJt4 | Write and Submit your first Linux kernel Patch]]. Before sending the patch to community please send it to daniel.baluta@nxp.com for review. Make sure you only look into drivers/staging directory. ==== Use Qemu to get a feel of how things are working ==== * Qemu repo is at https://github.com/thesofproject/qemu/ we use branch sof-v4.2 * Build qemu by looking at [[https://www.alsa-project.org/wiki/Firmware | Firmware ]]. Look at chapter 'Build the Qemu DSP emulator from source.' * Try to boot sof-imx8.ri SOF binary with qemu * Use the following command ./xtensa-softmmu/qemu-system-xtensa -cpu imx8 -M adsp_imx8 -nographic -kernel ../sof.git/build_imx8_gcc/src/arch/xtensa/sof-imx8.ri * Look at [[https://www.alsa-project.org/wiki/Firmware#Using_the_Qemu_DSP_emulator | Using the Qemu DSP emulator]] and try to run a full system with Linux kernel and SOF firmware. ===== Contact ===== * Mailing list: sound-open-firmware@alsa-project.org * IRC: #sof on irc.freenode.net * Gitter: https://gitter.im/thesofproject