1
0

knee page discovery

This commit is contained in:
Aiden
2026-05-26 19:08:15 +10:00
parent 57547fb6ed
commit 0d099235c5
8 changed files with 882 additions and 8 deletions

View File

@@ -0,0 +1,100 @@
{
"name": "knee-detail-physical-button-watch",
"notes": [
"Create clean watch windows for the physical DETAIL and KNEE buttons near the LCD.",
"The ROM trace suggests these buttons may be the missing F104 panel-input transition into loc_1795.",
"Watch the console labels and LCD. During the labeled windows, press DETAIL, KNEE, then DETAIL/KNEE alternately."
],
"steps": [
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"heartbeats": 2,
"timeout": 10.0,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "ok_seed_1",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "ok_seed_2",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "prepare_clear_0110",
"frame": "00 01 90 00 00 CB",
"listen": 0.30
},
{
"action": "send",
"label": "prepare_00b9_bit13_gate",
"frame": "00 01 39 20 00 42",
"listen": 0.80
},
{
"action": "listen",
"seconds": 5.0
},
{
"action": "send",
"label": "read_00bc_after_detail_press_window",
"frame": "01 01 3C 00 00 66",
"listen": 0.80
},
{
"action": "send",
"label": "refresh_00b9_bit13_gate_for_knee_press",
"frame": "00 01 39 20 00 42",
"listen": 0.50
},
{
"action": "listen",
"seconds": 5.0
},
{
"action": "send",
"label": "read_00bc_after_knee_press_window",
"frame": "01 01 3C 00 00 66",
"listen": 0.80
},
{
"action": "send",
"label": "prepare_00b9_a0_for_page_label_watch",
"frame": "00 01 39 A0 00 C2",
"listen": 0.80
},
{
"action": "listen",
"seconds": 6.0
},
{
"action": "send",
"label": "prepare_0110_dl_override_then_press_buttons",
"frame": "00 01 90 80 00 4B",
"listen": 0.80
},
{
"action": "listen",
"seconds": 6.0
},
{
"action": "send",
"label": "final_read_00bc",
"frame": "01 01 3C 00 00 66",
"listen": 0.80
}
]
}

View File

@@ -0,0 +1,206 @@
{
"name": "knee-rom-dtl-knee-isolation",
"notes": [
"Isolate which ROM-derived KNEE selector sequence creates the bench DTL/KNEE LCD state.",
"Record the exact case label visible in the console when DTL/KNEE appears or disappears.",
"Cases separate 0x00B9.13 gate, 0x00B9.15 label bit, and 0x0110.15 timed override."
],
"steps": [
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"heartbeats": 2,
"timeout": 10.0,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "case_a_ok_seed_1",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_a_ok_seed_2",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_a_clear_00b9",
"frame": "00 01 39 00 00 62",
"listen": 0.30
},
{
"action": "send",
"label": "case_a_clear_0110",
"frame": "00 01 90 00 00 CB",
"listen": 0.30
},
{
"action": "send",
"label": "case_a_set_00b9_bit13_only_watch_dtl_knee",
"frame": "00 01 39 20 00 42",
"listen": 3.00
},
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"heartbeats": 2,
"timeout": 10.0,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "case_b_ok_seed_1",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_b_ok_seed_2",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_b_clear_0110",
"frame": "00 01 90 00 00 CB",
"listen": 0.30
},
{
"action": "send",
"label": "case_b_set_00b9_bits15_and_13_watch_dtl_knee",
"frame": "00 01 39 A0 00 C2",
"listen": 3.00
},
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"heartbeats": 2,
"timeout": 10.0,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "case_c_ok_seed_1",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_c_ok_seed_2",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_c_clear_00b9",
"frame": "00 01 39 00 00 62",
"listen": 0.30
},
{
"action": "send",
"label": "case_c_set_0110_bit15_only_watch_dtl_knee",
"frame": "00 01 90 80 00 4B",
"listen": 3.00
},
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"heartbeats": 2,
"timeout": 10.0,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "case_d_ok_seed_1",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_d_ok_seed_2",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_d_set_00b9_bit13_then_0110_override_part1",
"frame": "00 01 39 20 00 42",
"listen": 0.80
},
{
"action": "send",
"label": "case_d_set_0110_bit15_after_00b9_bit13_watch_dtl_knee",
"frame": "00 01 90 80 00 4B",
"listen": 3.00
},
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"heartbeats": 2,
"timeout": 10.0,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "case_e_ok_seed_1",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_e_ok_seed_2",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_e_set_00b9_a0_then_0110_override_part1",
"frame": "00 01 39 A0 00 C2",
"listen": 0.80
},
{
"action": "send",
"label": "case_e_set_0110_bit15_after_00b9_a0_watch_dtl_knee",
"frame": "00 01 90 80 00 4B",
"listen": 3.00
}
]
}

View File

@@ -0,0 +1,132 @@
{
"name": "knee-rom-gate-and-value-probe",
"notes": [
"Probe the ROM-derived KNEE model from docs/pt2-knee-rom-trace.md.",
"The key correction is that 0x00B9.13 gates the live KNEE value/report branch, while 0x0110.15 forces the timed KNEE page.",
"Serial writes may only prepare the state. If the panel has a KNEE-related control, move it during the long gate windows and watch for selector 0x00BC reports or visible KNEE changes."
],
"steps": [
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"heartbeats": 2,
"timeout": 10.0,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "ok_seed_1",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "ok_seed_2",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "clear_00b9",
"frame": "00 01 39 00 00 62",
"listen": 0.30
},
{
"action": "send",
"label": "clear_0110",
"frame": "00 01 90 00 00 CB",
"listen": 0.80
},
{
"action": "send",
"label": "read_00bc_baseline",
"frame": "01 01 3C 00 00 66",
"listen": 0.60
},
{
"action": "send",
"label": "set_00b9_bit13_gate_move_knee_control_if_possible",
"frame": "00 01 39 20 00 42",
"listen": 4.00
},
{
"action": "send",
"label": "read_00bc_after_gate_window",
"frame": "01 01 3C 00 00 66",
"listen": 0.80
},
{
"action": "send",
"label": "set_00b9_bits15_and_13_preset_label_plus_gate",
"frame": "00 01 39 A0 00 C2",
"listen": 1.50
},
{
"action": "send",
"label": "set_0110_bit15_dl_timed_page_override",
"frame": "00 01 90 80 00 4B",
"listen": 2.50
},
{
"action": "send",
"label": "clear_0110_return_to_value_path",
"frame": "00 01 90 00 00 CB",
"listen": 1.00
},
{
"action": "send",
"label": "read_00bc_after_override_clear",
"frame": "01 01 3C 00 00 66",
"listen": 0.80
},
{
"action": "repeat",
"count": 2,
"steps": [
{
"action": "send",
"label": "00bc_direct_low_probe",
"frame": "00 01 3C 00 00 67",
"listen": 0.35
},
{
"action": "send",
"label": "00bc_direct_mid_probe",
"frame": "00 01 3C 40 00 27",
"listen": 0.35
},
{
"action": "send",
"label": "00bc_direct_high_probe",
"frame": "00 01 3C 80 00 E7",
"listen": 0.35
},
{
"action": "send",
"label": "read_00bc_direct_probe",
"frame": "01 01 3C 00 00 66",
"listen": 0.50
}
]
},
{
"action": "send",
"label": "final_clear_00b9",
"frame": "00 01 39 00 00 62",
"listen": 0.50
},
{
"action": "send",
"label": "final_clear_0110",
"frame": "00 01 90 00 00 CB",
"listen": 1.50
}
]
}

View File

@@ -0,0 +1,110 @@
{
"name": "lamp-knee-context-hold",
"notes": [
"Test whether the known quiet active refresh context lets KNEE AUTO stay on.",
"The prior sustain test showed repeated 0x00B9.15 never lit KNEE AUTO, while repeated 0x0110.15 lit it then cleared around mid-window.",
"This pairs each KNEE candidate with the proven 0x0093=0x9020 active refresh stream."
],
"steps": [
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"heartbeats": 2,
"timeout": 10.0,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "case_00b9_context_ok_seed_1",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_00b9_context_ok_seed_2",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "repeat",
"count": 10,
"steps": [
{
"action": "send",
"label": "context_0093_9020_refresh_for_00b9",
"frame": "00 01 13 90 20 F8",
"listen": 0.25
},
{
"action": "send",
"label": "context_00b9_bit15_knee_test",
"frame": "00 01 39 80 00 E2",
"listen": 0.35
}
]
},
{
"action": "send",
"label": "clear_00b9_with_context_watch",
"frame": "00 01 39 00 00 62",
"listen": 1.00
},
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"heartbeats": 2,
"timeout": 10.0,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "case_0110_context_ok_seed_1",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "case_0110_context_ok_seed_2",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "repeat",
"count": 10,
"steps": [
{
"action": "send",
"label": "context_0093_9020_refresh_for_0110",
"frame": "00 01 13 90 20 F8",
"listen": 0.25
},
{
"action": "send",
"label": "context_0110_bit15_knee_test",
"frame": "00 01 90 80 00 4B",
"listen": 0.35
}
]
},
{
"action": "send",
"label": "clear_0110_with_context_watch",
"frame": "00 01 90 00 00 CB",
"listen": 1.00
}
]
}

View File

@@ -0,0 +1,116 @@
{
"name": "lamp-knee-edge-refresh",
"notes": [
"Test whether KNEE AUTO needs a low-to-high edge on 0x0110.15 rather than repeated high writes.",
"The context-hold test kept active serial responses alive, but KNEE AUTO still turned off mid-run.",
"This alternates clear/set for 0x0110.15, first by itself and then with 0x0093=0x9020 context refresh."
],
"steps": [
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"heartbeats": 2,
"timeout": 10.0,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "edge_only_ok_seed_1",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "edge_only_ok_seed_2",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "repeat",
"count": 10,
"steps": [
{
"action": "send",
"label": "edge_only_clear_0110",
"frame": "00 01 90 00 00 CB",
"listen": 0.18
},
{
"action": "send",
"label": "edge_only_set_0110_bit15_watch",
"frame": "00 01 90 80 00 4B",
"listen": 0.42
}
]
},
{
"action": "send",
"label": "edge_only_final_clear_0110",
"frame": "00 01 90 00 00 CB",
"listen": 1.00
},
{
"action": "power_cycle",
"off_seconds": 1.5
},
{
"action": "wait_ready",
"heartbeats": 2,
"timeout": 10.0,
"require": true
},
{
"action": "drain",
"seconds": 0.25
},
{
"action": "send",
"label": "edge_context_ok_seed_1",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "send",
"label": "edge_context_ok_seed_2",
"frame": "00 00 00 80 00 DA",
"listen": 0.60
},
{
"action": "repeat",
"count": 10,
"steps": [
{
"action": "send",
"label": "edge_context_0093_9020_refresh",
"frame": "00 01 13 90 20 F8",
"listen": 0.20
},
{
"action": "send",
"label": "edge_context_clear_0110",
"frame": "00 01 90 00 00 CB",
"listen": 0.16
},
{
"action": "send",
"label": "edge_context_set_0110_bit15_watch",
"frame": "00 01 90 80 00 4B",
"listen": 0.34
}
]
},
{
"action": "send",
"label": "edge_context_final_clear_0110",
"frame": "00 01 90 00 00 CB",
"listen": 1.00
}
]
}