From bb70d3ae96c8c271a67bdf3b554b6e8f246678b0 Mon Sep 17 00:00:00 2001 From: Anders Haas Franzen Date: Thu, 29 Oct 2026 20:24:26 +0100 Subject: [PATCH] Recognize RAM payload USB devices on Linux --- src/orchard_cli/apple/linux_usb.py | 2 +- tests/test_device_state.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/orchard_cli/apple/linux_usb.py b/src/orchard_cli/apple/linux_usb.py index c363f08..4042546 100644 --- a/src/orchard_cli/apple/linux_usb.py +++ b/src/orchard_cli/apple/linux_usb.py @@ -3,7 +3,7 @@ import re import uuid -MODES = {0x1227: 'dfu', 0x4141: 'pongo', 0x4142: 'linux'} +MODES = {0x1227: 'dfu', 0x4141: 'pongo', 0x4142: 'linux', 0x4144: 'ram'} def devices(root=Path('/sys/bus/usb/devices')): diff --git a/tests/test_device_state.py b/tests/test_device_state.py index 5212902..74349ca 100644 --- a/tests/test_device_state.py +++ b/tests/test_device_state.py @@ -142,6 +142,20 @@ def test_linux_usb_descriptor_identifies_device_and_boot_without_serial_commands self.assertEqual(len(rows),1) self.assertEqual((rows[0]['ecid'],rows[0]['boot_id']),(2,BOOT_B)) + def test_linux_ram_payload_is_available_to_ram_session_tools(self): + node = self.root/'1-2' + node.mkdir() + for name,value in {'idVendor':'05ac','idProduct':'4144','product':'Orchard charger-test', + 'serial':f'BOOT:{BOOT_B}'}.items(): + (node/name).write_text(value) + (node/'iface/tty/ttyACM0').mkdir(parents=True) + rows = linux_usb.devices(self.root) + self.assertEqual(len(rows),1) + self.assertEqual(rows[0]['mode'],'ram') + self.assertEqual(rows[0]['boot_id'],BOOT_B) + self.assertEqual(rows[0]['serial_port'],'/dev/ttyACM0') + self.assertIsNone(rows[0]['ecid']) + if __name__ == '__main__': unittest.main()