Initial release v1.0.0

Add GPIO-based volume button driver for Lenovo IdeaPad Flex 5i Chromebook Gen 8

  Features:
  - Volume button detection via GPIO polling
  - Key repeat with configurable timings
  - Systemd service integration
  - Professional documentation
This commit is contained in:
Augustin ROUX 2025-10-13 11:14:21 +02:00
parent bc9d6f8639
commit 5a8f103be3
3 changed files with 254 additions and 6 deletions

175
CREDITS.md Normal file
View File

@ -0,0 +1,175 @@
# Credits and Acknowledgments
This project would not exist without the work of numerous individuals and communities in the open source ecosystem.
## Primary Author
**Muyue** - Original implementation and maintenance
## Firmware and Hardware Support
**MrChromebox (Matt DeVillier)**
- Custom UEFI firmware for Chromebooks
- Enabling Linux compatibility on ChromeOS hardware
- Website: https://mrchromebox.tech/
- GitHub: https://github.com/MrChromebox
**Google ChromiumOS Team**
- Embedded Controller (EC) firmware
- GPIO infrastructure and documentation
- Coreboot integration
- Project: https://www.chromium.org/chromium-os/
**Coreboot Project**
- Open source firmware replacement
- ACPI table implementation
- Hardware initialization
- Project: https://www.coreboot.org/
## Linux Kernel Contributors
**Linux GPIO Subsystem Maintainers**
- Bartosz Golaszewski - libgpiod maintainer
- Linus Walleij - GPIO subsystem maintainer
- Kent Gibson - GPIO userspace API v2
- All contributors to drivers/gpio/
**Linux Input Subsystem**
- Dmitry Torokhov - Input subsystem maintainer
- All contributors to drivers/input/
**Intel Platform Drivers**
- Contributors to intel-vbtn driver
- ChromeOS EC kernel driver developers
## Software Libraries
**libgpiod Project**
- Bartosz Golaszewski - Lead developer
- Project: https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/
- Providing clean userspace GPIO access
**python-evdev**
- Georgi Valkov - Original author and maintainer
- Project: https://github.com/gvalkov/python-evdev
- Python bindings for Linux input subsystem
**Python Core Team**
- Guido van Rossum - Python creator
- Python Software Foundation
- All Python core developers and contributors
## Linux Distributions
**Arch Linux**
- Package maintainers for python-evdev and libgpiod
- Documentation and wiki contributors
- Community support
**All Linux Distributions**
- Debian, Ubuntu, Fedora, Gentoo, and others
- For packaging and maintaining open source software
## Hardware Vendors
**Lenovo**
- Manufacturing IdeaPad Flex 5i Chromebook Gen 8
- Hardware design and engineering
**Intel**
- Core i3-1215U processor design
- Platform specifications and documentation
- Open source driver support
**Google**
- ChromeOS hardware reference designs (Brya family)
- Embedded Controller specifications
- Open source commitment
## Standards Organizations
**USB Implementers Forum**
- HID (Human Interface Device) specifications
**ACPI Specification**
- Advanced Configuration and Power Interface standards
**Linux Foundation**
- Hosting kernel development
- Supporting open source infrastructure
## Documentation and Education
**ArchWiki Contributors**
- Comprehensive Linux documentation
- Chromebook-specific guides
**Stack Overflow Community**
- Technical Q&A and problem solving
**GitHub/GitLab/Gitea**
- Hosting open source projects
- Collaboration infrastructure
## Testing and Feedback
Special thanks to the Chromebook Linux community for:
- Hardware compatibility testing
- Bug reports and feature requests
- Documentation improvements
- Use case validation
## Tools and Infrastructure
**Git Version Control**
- Linus Torvalds - Git creator
- Git development community
**systemd**
- Lennart Poettering and systemd team
- Service management infrastructure
**GNU Project**
- bash, coreutils, and essential utilities
- Free Software Foundation
## Inspiration and References
**ChromiumOS EC GPIO Documentation**
- Technical specifications for EC GPIO pins
- Board-specific configuration details
**Linux Kernel Documentation**
- GPIO userspace API documentation
- Input subsystem documentation
- Character device interface specifications
**Academic Research**
- Computer hardware interfacing research
- Operating systems research
- Human-computer interaction studies
## Free and Open Source Software Philosophy
This project stands on the shoulders of giants. The open source philosophy of:
- **Free Software Foundation** - Richard Stallman
- **Open Source Initiative** - Bruce Perens, Eric S. Raymond
- Countless developers who choose to share their work freely
## Legal Acknowledgments
All trademarks mentioned herein are property of their respective owners:
- Lenovo, IdeaPad, and Flex are trademarks of Lenovo
- Intel and Core are trademarks of Intel Corporation
- Chromebook and ChromeOS are trademarks of Google LLC
- Linux is a registered trademark of Linus Torvalds
## Contributing
If your work contributed to this project and you're not listed here, please submit a pull request to add yourself. Every contribution matters.
## Final Note
Open source is a collaborative effort. This project is freely available because countless individuals and organizations chose to share their knowledge and code. We honor that tradition by releasing this work under the MIT License, ensuring it remains free for all.
Thank you to everyone who makes open source software possible.

View File

@ -2,6 +2,27 @@
Hardware volume button driver for Chromebook devices with non-functional side-mounted volume controls. Hardware volume button driver for Chromebook devices with non-functional side-mounted volume controls.
## Free and Open Source Software
This project is **completely free and open source** under the MIT License.
**You are free to:**
- Use this software for any purpose (personal, commercial, educational)
- Study and modify the source code
- Redistribute original or modified versions
- Integrate into your own projects
- Create derivative works
**No restrictions except:**
- Include the original MIT License and copyright notice
- Provide attribution to the original author
**Philosophy:**
This software is released in the spirit of collaboration and knowledge sharing. It builds upon the work of countless open source contributors (see CREDITS.md) and continues that tradition by remaining completely free for everyone.
**Contributions Welcome:**
Pull requests, bug reports, documentation improvements, and hardware compatibility reports are encouraged and appreciated. See CONTRIBUTING.md for guidelines.
## Hardware Compatibility ## Hardware Compatibility
**Primary Target:** **Primary Target:**
@ -201,6 +222,15 @@ Muyue
## Acknowledgments ## Acknowledgments
- MrChromebox for custom BIOS support This project is possible thanks to the work of many individuals and organizations:
- ChromiumOS embedded controller team
- Linux GPIO subsystem maintainers - **MrChromebox** - Custom UEFI firmware for Chromebooks
- **ChromiumOS Team** - Embedded controller firmware and documentation
- **Linux Kernel Contributors** - GPIO subsystem and input subsystem
- **libgpiod Project** - Bartosz Golaszewski and contributors
- **python-evdev** - Georgi Valkov and contributors
- **Open Source Community** - All contributors to tools, libraries, and documentation used
For a complete list of acknowledgments, see [CREDITS.md](CREDITS.md).
This project stands on the shoulders of giants. Thank you to everyone who makes open source possible.

View File

@ -1,8 +1,51 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
""" """
Script pour activer les boutons volume du Chromebook Taeko Chromebook Volume Buttons Driver
Les boutons sont connectés aux GPIO 3 (Volume Down) et 4 (Volume Up)
sur le chip cros-ec-gpio (gpiochip1) Hardware volume button driver for Chromebook devices with non-functional
side-mounted volume controls.
This driver reads GPIO states from the ChromeOS Embedded Controller and
emulates keyboard volume events via uinput, enabling physical volume buttons
on Chromebooks running Linux with custom firmware.
Target Hardware:
- Lenovo IdeaPad Flex 5i Chromebook Gen 8 (Taeko)
- GPIO 3 (EC:EC_VOLDN_BTN_ODL) - Volume Down
- GPIO 4 (EC:EC_VOLUP_BTN_ODL) - Volume Up
- Chip: /dev/gpiochip1 (cros-ec-gpio)
License:
MIT License
Copyright (c) 2025 Muyue
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Author:
Muyue
Contributors:
See CREDITS.md for acknowledgments of all contributors to this project
and the open source libraries and tools it depends upon.
Repository:
https://gitea.legion-muyue.fr/Muyue/chromebook-volume-buttons
""" """
import sys import sys