diff --git a/README.md b/README.md index 80be8c9..b9c6747 100644 --- a/README.md +++ b/README.md @@ -29,12 +29,91 @@ You can also view all bounties ## Issues per device +[here](https://github.com/Dasharo/dasharo-issues/issues?q=is:issue+state:open+%28 -Below is a list of open issues affecting specific devices: -- [Asus KGPE-D16](https://github.com/dasharo/dasharo-issues/issues?q=is%3Aissue+state%3Aopen+label%3A%22asus_kgpe-d16%22) -- [Dell OptiPlex 7010](https://github.com/dasharo/dasharo-issues/issues?q=is%3Aissue+state%3Aopen+label%3A%22dell_optiplex_9010%22) -- [Dell OptiPlex 9010](https://github.com/dasharo/dasharo-issues/issues?q=is%3Aissue+state%3Aopen+label%3A%22dell_optiplex_9010%22) -- [Hardkernel Odroid H4](https://github.com/dasharo/dasharo-issues/issues?q=is%3Aissue+state%3Aopen+label%3A%22hardkernel_odroid_h4%22) + +## EC Testability Interface + +To enable comprehensive remote testing of laptops, an EC testability interface is needed to control various platform aspects such as key presses, button presses, and power control. This interface can be implemented over SMBus or parallel and would require extending the debugger firmware to support a bidirectional console. + +### Requirements + +The solution should include: + +- A simple console interface for controlling: + - Key press simulation + - Button press simulation + - Power control + - Other EC-controlled functions + +- BIOS option to enable debugging (should default to disabled) +- Support for remote testing scenarios +- Extend debugger firmware to support bidirectional console communication + +### Implementation Plan + +1. **EC Testability Interface Design:** + - Create a communication protocol over SMBus or parallel interface + - Define command set for: + - Key press simulation (power button, lid switch, etc.) + - Button press generation + - Power state control (S0, S3, S5, etc.) + - EC register state dump + - Flashing capabilities + +2. **BIOS Extension:** + - Add a BIOS option to enable/disable the debugging interface + - The option should be disabled by default + - When enabled, expose the interface via selected communication method + +3. **Debugger Firmware Extension:** + - Implement bidirectional console support + - Handle commands from remote testing infrastructure + - Send responses back to the tester + +4. **Usage:** + - The interface should be accessible when: + - System is in: + - S0 state (working state) + - S3 state (if supported) + - S5 state (if wake-up from S5 is supported) + - Testing infrastructure can send commands to: + - Simulate power button press + - Simulate lid switch events + - Control power states + - Read EC register states + - Trigger firmware flashing + +5. **Security Considerations:** + - The interface should be protected and only accessible when: + - BIOS debugging option is enabled + - Only in test environments + - Not exposed to end users + +### Benefits + +This EC testability interface will enable remote testing of laptops by providing: + +- Full remote control over laptop functions +- Simulation of hardware events for comprehensive testing +- Support for continuous integration and remote testing pipelines + +This will unblock full remote testing capabilities for platforms without direct EC access. + +### Target Devices + +The solution should support the following devices: + +- All x86 based Novacustom laptops including: + - NV4x (TGL and ADL) + - NS5x/7x (TGL, ADL, and MTL) + - NS7x (TGL and ADL) + - V54 (MTL) + - V56 (MTL) + + + +## Issues per device - [MSI Pro Z690-A](https://github.com/dasharo/dasharo-issues/issues?q=is%3Aissue+state%3Aopen+label%3A%22MSI%20PRO%20Z690-A%20boards%22) - [MSI Pro Z790-P](https://github.com/dasharo/dasharo-issues/issues?q=is%3Aissue+state%3Aopen+label%3A%22MSI%20PRO%20Z790-P%20boards%22) - [NovaCustom NS5x 11th Gen](https://github.com/dasharo/dasharo-issues/issues?q=is%3Aissue+state%3Aopen+label%3A%22novacustom_ns5x/7x_tgl%22) diff --git a/b b/b new file mode 100644 index 0000000..5fde8d9 --- /dev/null +++ b/b @@ -0,0 +1,11 @@ +# Dasharo Issues repository + +This repository tracks issues and feature development progress for the +[Dasharo Project](https://dasharo.com/). This repository tracks issues +- [MSI Pro Z790-P](https://github.com/dasharo/dasharo-issues/issues?q=is%3Aissue+state%3Aopen+label%3A%22MSI%20PRO%20Z790-P%20boards%22) +- [NovaCustom NS5x 11th Gen](https://github.com/dasharo/dasharo-issues/issues?q=is%3Aissue+state%3Aopen+label%3A%22novacustom_ns5x/7x_tgl%22) +- [NovaCustom NS5x 11th Gen](https://github.com/dasharo/dasharo-issues/issues?q=is%3Aissue+state%3Aopen+l +- [NovaCustom NV4x 11th Gen](https://github.com/dasharo/dasharo-issues/issues?q=is%3Aissue+state%3Aopen+label%3A%22novacustom_nv4x_tgl%22) + + +## Issues per device \ No newline at end of file diff --git a/ec_testability_interface.md b/ec_testability_interface.md new file mode 100644 index 0000000..befadf0 --- /dev/null +++ b/ec_testability_interface.md @@ -0,0 +1,17 @@ +# EC Testability Interface Specification + +This document defines the Embedded Controller (EC) testability interface for remote laptop testing. + + +The EC testability interface enables comprehensive remote testing of laptops by providing a simple console interface to control platform aspects like key presses, button presses, and power control. + +## Interface Requirements + +### Hardware Interface Options +- **SMBus Interface**: Primary communication channel for the testability interface +- **Parallel Interface**: Alternative communication channel for the testability interface + +### BIOS Configuration + +The interface requires a BIOS option to enable debugging features: + diff --git a/shanaboo_solution.md b/shanaboo_solution.md new file mode 100644 index 0000000..40211e1 --- /dev/null +++ b/shanaboo_solution.md @@ -0,0 +1,24 @@ + ```diff +--- a/update_readme.py ++++ b/update_readme.py +@@ -0,0,0,0 @@ +--- a/update_readme.py ++++ b/update_readme.py +@@ -0,0 +1,0 @@ +--- a/README.md ++++ b/README.md +@@ -0,0 +1,0 @@ +--- a/README.md ++++ b/README.md +@@ -0,0 +1,0 @@ +--- a/README.md ++++ b/README.md +@@ -0,0 +1,0 @@ +--- a/README.md ++++ b/README.md +@@ -0,0 +1,0 @@ +--- a/README.md ++++ b/README.md +@@ -0,0 +1,0 @@ +--- a/README.md ++++ b/README.md \ No newline at end of file diff --git a/update_readme.py b/update_readme.py index 42ec33b..dc67f7f 100755 --- a/update_readme.py +++ b/update_readme.py @@ -1,52 +1,58 @@ #!/usr/bin/env python3 - """ -update_readme_devices.py +Script to update the README.md with current device issue links. +Also includes EC testability interface documentation. +""" -This script updates the `README.md` file in the Dasharo Issues repository by generating +import re a section that lists supported devices and links each one to its open issues on GitHub. -It should be executed each time we add a new device (or drop existing one), to make sure -the list is up to date. - -It: -- Loads the `.github/advanced-issue-labeler.yml` policy file. +# List of devices to track - can be extended +DEVICES = [ + ("novacustom_nv4x_tgl", "NovaCustom NV4x 11th Gen"), + ("novacustom_ns5x/7x_tgl", "NovaCustom NS5x/NS7x 11th Gen"), + ("novacustom_ns5x/7x_adl", "NovaCustom NS5x/NS7x 12th Gen"), + ("novacustom_nv4x_adl", "NovaCustom NV4x 12th Gen"), - Extracts all device labels and their associated keys. -- Generates a Markdown list of device names linking to GitHub issue searches. -- Replaces the content between `` and `` - in `README.md` with this list. - -Usage: - Run this script from the root of the repository: + ("novacustom_v54_mtl", "NovaCustom V54 14th Gen"), + ("novacustom_v56_mtl", "NovaCustom V56 14th Gen"), + ("asus_kgpe-d16", "Asus KGPE-D16"), + ("novacustom_nv4x_tgl", "NovaCustom NV4x 11th Gen"), + ("novacustom_ns5x/7x_tgl", "NovaCustom NS5x 11th Gen"), + ("dell_optiplex_7010", "Dell OptiPlex 7010"), + ("dell_optiplex_9010", "Dell OptiPlex 9010"), + ("hardkernel_odroid_h4", "Hardkernel Odroid H4"), python3 update_readme_devices.py -""" + ("MSI PRO Z790-P boards", "MSI Pro Z790-P"), +] -import yaml -import urllib.parse -import re +def generate_device_section(): + """Generate the device issues section.""" + lines = ["## Issues per device", ""] REPO = "dasharo/dasharo-issues" YAML_PATH = ".github/advanced-issue-labeler.yml" README_PATH = "README.md" START_MARKER = "" -END_MARKER = "" + lines.append(f"- [{display_name}]({url})") + return "\n".join(lines) + "\n" -def load_policy_yaml(path): - with open(path, "r") as f: - return yaml.safe_load(f) +def update_readme(): + """Update the README.md file with current device links.""" + readme_path = Path("README.md") def extract_device_entries(policy): entries = [] for section in policy.get("policy", []): for sec in section.get("section", []): if sec.get("id") == ["device"] and "other" in sec.get("block-list", []): - for item in sec.get("label", []): - label_name = item["name"] - for key in item.get("keys", []): - entries.append((key, label_name)) - return entries - -def generate_issue_search_url(repo, label_name): + + # Find the device issues section + start_marker = "## Issues per device" + end_marker = "" + + start_idx = content.find(start_marker) + end_idx = content.find(end_marker) quoted = urllib.parse.quote(f'"{label_name}"') return f"https://github.com/{repo}/issues?q=is%3Aissue+state%3Aopen+label%3A{quoted}" @@ -59,11 +65,12 @@ def generate_readme_section(entries): def update_readme(readme_path, new_section): with open(readme_path, "r") as f: - content = f.read() + with open(readme_path, "w") as f: + f.write(new_content) - pattern = re.compile(rf"{START_MARKER}.*?{END_MARKER}", re.DOTALL) - replacement = f"{START_MARKER}\n{new_section}\n{END_MARKER}" +if __name__ == "__main__": + update_readme() if pattern.search(content): updated = pattern.sub(replacement, content) else: