Showing 27 changed files with 1295 additions and 0 deletions
+3 -0
.gitignore
@@ -8,3 +8,6 @@
8 8
 # Build products
9 9
 DerivedData/
10 10
 build/
11
+
12
+# Large local research archives kept out of regular git history
13
+Documentation/Research Resources/Software/PC Software/UM24C PC Software V1.3.rar
+33 -0
Documentation/README.md
@@ -3,3 +3,36 @@
3 3
 This folder contains project notes, platform decisions, and collected reverse engineering material.
4 4
 
5 5
 It is intended to keep the repository root focused on the app itself while preserving project context in one dedicated place.
6
+
7
+## Working Layout
8
+
9
+- `Project History.md`
10
+  Narrative context and decisions that explain how the project got here.
11
+- `Platform Decision - iOS 15.md`
12
+  App-level platform choices that affect implementation.
13
+- `Research Resources/`
14
+  External source material plus the notes derived from it.
15
+
16
+## Documentation Layers
17
+
18
+We keep two distinct layers of documentation:
19
+
20
+- project documentation
21
+  Notes that describe our app, decisions, assumptions, and roadmap
22
+- research documentation
23
+  Vendor manuals, software archives, contact sheets, protocol notes, and model-specific findings
24
+
25
+## Retention Rule
26
+
27
+Prefer keeping:
28
+
29
+- small curated Markdown notes
30
+- raw manuals and reference PDFs
31
+- small software artifacts that are directly useful for reverse engineering
32
+- one canonical copy of each vendor artifact line
33
+
34
+Avoid committing by default:
35
+
36
+- very large archives with low immediate value
37
+- duplicate files already represented elsewhere
38
+- generated exports that can be reproduced from a kept source
+56 -0
Documentation/Research Resources/Manuals/README.md
@@ -7,3 +7,59 @@ Recommended naming:
7 7
 - include model name
8 8
 - include version or revision when known
9 9
 - include source and date when possible
10
+
11
+## Collected Manuals
12
+
13
+### `USB tester UM24C - User Manual.pdf`
14
+
15
+- status: added to repository
16
+- apparent scope: `UM24C`
17
+- pages: `19`
18
+- document language hint: `zh-CN`
19
+- creator metadata: `Microsoft Word 2010`
20
+- extraction status: text extraction not yet cleaned; review will likely require manual reading or OCR-aware extraction
21
+- compatibility note: keep as `UM24C`-specific until we find stronger evidence that the same manual applies unchanged to `UM25C` or `UM34C`
22
+
23
+### `UM24(C) USB tester meter  Instruction   PC software intruction  Android APP instruction- 3 in 1 -  2018.6.30(3).pdf`
24
+
25
+- status: not imported separately
26
+- reason: duplicate of `USB tester UM24C - User Manual.pdf`
27
+- SHA-1: `b85dde3d36ee017a7a7f643690283d64aa29d516`
28
+
29
+### `TC66.pdf`
30
+
31
+- status: added to repository
32
+- apparent scope: `TC66` / `TC66C`
33
+- pages: `9`
34
+- title metadata: `TC66/TC66C`
35
+- creator metadata: `Microsoft Word 2010`
36
+- SHA-1: `c9272064731ab462b6c872d92536d7291b2bda1d`
37
+- extraction status: reviewed; summarized in `../Specifications/TC66 Manuals Working Summary.md`
38
+
39
+### `User Maual for Operation and PC software and APP of TC66(C) Type-c USB PD Trigger Meter 2019.6.5.pdf`
40
+
41
+- status: added to repository
42
+- apparent scope: `TC66(C)` including device operation, PC software, and Android app workflow
43
+- pages: `12`
44
+- creator metadata: `WPS 文字`
45
+- SHA-1: `a497356baab166af7cf0806e3095a59ad18f0276`
46
+- extraction status: reviewed; summarized in `../Specifications/TC66 Manuals Working Summary.md`
47
+
48
+### `User_Manual_UM34C.pdf`
49
+
50
+- status: added to repository
51
+- apparent scope: shared `UM25C` / `UM34C` family operation manual, but model labeling is inconsistent inside the document
52
+- pages: `12`
53
+- creator metadata: `Microsoft Word 2016`
54
+- SHA-1: `71f6ccae85ba6930e626208e24f66dead07d3e52`
55
+- extraction status: text extracted and summarized in `../Specifications/UM34C Manual Working Summary.md`
56
+
57
+### `UM25 User Manual.pdf`
58
+
59
+- status: added to repository
60
+- apparent scope: `UM25` family manual as provided from local source
61
+- pages: `27`
62
+- creator metadata: `WPS 文字`
63
+- source filename: `98c297e2b477494d7de0babe2b77877749c3.pdf`
64
+- SHA-1: `518898c297e2b477494d7de0babe2b77877749c3`
65
+- extraction status: imported as raw manual; content review not yet performed
BIN
Documentation/Research Resources/Manuals/TC66.pdf
Binary file not shown.
BIN
Documentation/Research Resources/Manuals/UM25 User Manual.pdf
Binary file not shown.
BIN
Documentation/Research Resources/Manuals/USB tester UM24C - User Manual.pdf
Binary file not shown.
BIN
Documentation/Research Resources/Manuals/User Maual for Operation and PC software and APP of TC66(C) Type-c USB PD Trigger Meter 2019.6.5.pdf
Binary file not shown.
BIN
Documentation/Research Resources/Manuals/User_Manual_UM34C.pdf
Binary file not shown.
+11 -0
Documentation/Research Resources/Payload Notes/README.md
@@ -17,3 +17,14 @@ For each note, prefer recording:
17 17
 - sample payload
18 18
 - decoded meaning
19 19
 - confidence level
20
+
21
+## Collected Notes
22
+
23
+### `UM24C-UM25C-UM34C from floriandotorg-um24c.md`
24
+
25
+- external protocol notes for the UM family
26
+
27
+### `TC66C Transport and Payload Working Note.md`
28
+
29
+- implementation-oriented note derived from the TC66 manuals and the current app code
30
+- captures current transport assumptions, command surface, encrypted snapshot framing, and decoded field map
+267 -0
Documentation/Research Resources/Payload Notes/TC66C Transport and Payload Working Note.md
@@ -0,0 +1,267 @@
1
+# TC66C Transport and Payload Working Note
2
+
3
+This note translates the reviewed `TC66` manuals and the current app code into an implementation-oriented working reference.
4
+
5
+## Scope
6
+
7
+This note is about `TC66C`, not `TC66`.
8
+
9
+Reason:
10
+
11
+- the manuals say `TC66` is USB-only
12
+- the iOS and Android apps are `TC66C`-only
13
+- the current app code has a separate `TC66C` BLE path
14
+
15
+## Evidence Sources
16
+
17
+Primary sources used for this note:
18
+
19
+- `Documentation/Research Resources/Specifications/TC66 Manuals Working Summary.md`
20
+- `USB Meter/Model/Meter.swift`
21
+- `USB Meter/Model/BluetoothRadio.swift`
22
+- `USB Meter/Model/BluetoothSerial.swift`
23
+
24
+## Current App Assumptions
25
+
26
+The current app already treats `TC66C` as a different protocol family than `UM25C` / `UM34C`.
27
+
28
+Confirmed from code:
29
+
30
+- model enum contains a dedicated `TC66C` case
31
+- `TC66C` is mapped to radio type `PW0316`
32
+- peripheral names `TC66C` and `PW0316` are both recognized as `TC66C`
33
+- the scan path includes services `FFE0` and `FFE5` for this radio family
34
+
35
+## BLE Transport Assumptions In Code
36
+
37
+The current code assumes the following BLE transport for `TC66C`:
38
+
39
+- notify characteristic: service `FFE0`, characteristic `FFE4`
40
+- write characteristic: service `FFE5`, characteristic `FFE9`
41
+
42
+This differs from the `UM` family path already documented elsewhere:
43
+
44
+- `UM25C` / `UM34C` use `FFE0` / `FFE1`
45
+- `TC66C` uses a separate `PW0316`-style path in the current app
46
+
47
+## Request / Response Shape
48
+
49
+The current app polls `TC66C` using ASCII commands.
50
+
51
+Confirmed command surface already used by the app:
52
+
53
+- measurement snapshot request: `bgetva\r\n`
54
+- next page: `bnextp\r\n`
55
+- previous page: `blastp\r\n`
56
+- rotate screen: `brotat\r\n`
57
+
58
+Expected snapshot response size in current code:
59
+
60
+- `192` bytes
61
+
62
+Important implication:
63
+
64
+- the app assumes fixed-length snapshot framing for `TC66C`
65
+- this is not derived from the manuals directly; it comes from the existing reverse-engineered implementation
66
+
67
+## Encrypted Snapshot Structure
68
+
69
+The current parser decrypts the `192`-byte response with `AES ECB`.
70
+
71
+Observed implementation details:
72
+
73
+- the app uses a hard-coded `32`-byte AES key
74
+- the decrypted payload is treated as three `64`-byte packets
75
+- those packets are referred to as `pac1`, `pac2`, and `pac3`
76
+
77
+Each packet is validated as:
78
+
79
+- first four bytes are ASCII header `pac1`, `pac2`, or `pac3`
80
+- bytes `0...59` are CRC-covered
81
+- CRC seed is `0xFFFF`
82
+- stored CRC is little-endian at offset `60`
83
+
84
+If any of the three packets fail validation, the app rejects the snapshot as invalid.
85
+
86
+## Field Map Currently Parsed By The App
87
+
88
+The offsets below are offsets inside the decrypted packet blocks, not offsets into the encrypted `192`-byte BLE frame.
89
+
90
+### `pac1`
91
+
92
+- offset `4`, size `4`: candidate model name as ASCII
93
+- offset `8`, size `4`: candidate firmware version as ASCII
94
+- offset `12`, size `4`: candidate serial number, little-endian `UInt32`
95
+- offset `44`, size `4`: candidate boot count, little-endian `UInt32`
96
+- offset `48`, size `4`: voltage, raw / `10000`
97
+- offset `52`, size `4`: current, raw / `100000`
98
+- offset `56`, size `4`: power, raw / `10000`
99
+
100
+Confidence:
101
+
102
+- voltage / current / power are high-confidence because the app actively uses them
103
+- model / firmware / serial / boot count are medium-confidence because they exist as commented decoding hints in code, not active UI fields
104
+
105
+### `pac2`
106
+
107
+- offset `4`, size `4`: load resistance, raw / `10`
108
+- offset `8`, size `4`: data group `0` accumulated charge, raw / `1000`
109
+- offset `16`, size `4`: data group `1` accumulated charge, raw / `1000`
110
+- offset `48`, size `4`: data group `0` accumulated energy, raw / `1000`
111
+- offset `56`, size `4`: data group `1` accumulated energy, raw / `1000`
112
+- offset `24`, size `4`: temperature sign flag, `1` means negative in current parser
113
+- offset `28`, size `4`: temperature magnitude
114
+- offset `32`, size `4`: `D+` voltage, raw / `100`
115
+- offset `36`, size `4`: `D-` voltage, raw / `100`
116
+
117
+Confidence:
118
+
119
+- load resistance, temperature, `D+`, and `D-` are high-confidence in the sense that the app displays them
120
+- exact data-group interpretation is medium-confidence because the parser only fills groups `0` and `1`
121
+
122
+### `pac3`
123
+
124
+- no fields are currently decoded from `pac3`
125
+
126
+This is a major open area for further reverse engineering.
127
+
128
+## Mismatch Between Manuals And Current App
129
+
130
+### 1. Device pages vs exposed controls
131
+
132
+The manuals describe many on-device capabilities:
133
+
134
+- offline recording
135
+- protocol detection
136
+- trigger / decoy
137
+- system settings
138
+- information page
139
+- simple mode
140
+
141
+The current app only implements these direct `TC66C` controls:
142
+
143
+- request live snapshot
144
+- previous page
145
+- next page
146
+- rotate screen
147
+
148
+Not implemented in the current app for `TC66C`:
149
+
150
+- clear data group
151
+- select data group
152
+- brightness change
153
+- screen timeout change
154
+- recording-threshold change
155
+
156
+The code explicitly guards these setters off for `TC66C`.
157
+
158
+### 2. Data-group coverage
159
+
160
+The manuals discuss data groups, but the current parser only populates two groups for `TC66C`.
161
+
162
+Working interpretation:
163
+
164
+- either `TC66C` exposes only two remotely readable groups in the current snapshot layout
165
+- or the current parser only decodes the first two groups and leaves the rest unknown
166
+
167
+This needs verification from captures or app analysis.
168
+
169
+### 3. Bluetooth scope
170
+
171
+The manuals are clear that:
172
+
173
+- `TC66` is not a Bluetooth target
174
+- `TC66C` uses BLE for mobile apps
175
+
176
+This matches the current app architecture and strengthens confidence that `TC66C` should remain a separate transport family in the codebase.
177
+
178
+## Working State Model For `TC66C`
179
+
180
+The current implementation implicitly models at least these state domains:
181
+
182
+- connection state
183
+- active device page
184
+- instantaneous electrical measurements:
185
+  - voltage
186
+  - current
187
+  - power
188
+  - current direction is documented in manuals but not currently decoded into a separate published field
189
+- accumulated data:
190
+  - charge
191
+  - energy
192
+  - at least two data groups
193
+- cable and charger context:
194
+  - load resistance
195
+  - `D+`
196
+  - `D-`
197
+  - quick-charge related behavior
198
+- environment:
199
+  - temperature
200
+- device metadata:
201
+  - firmware version candidate
202
+  - serial number candidate
203
+  - boot count candidate
204
+
205
+## Practical Implications For Implementation
206
+
207
+### Keep `TC66C` separate from UM-family decoding
208
+
209
+- transport is different
210
+- request commands are different
211
+- payload framing is different
212
+- encryption is different
213
+
214
+The code already reflects this split and the manuals support it.
215
+
216
+### Treat `pac3` as the highest-value unknown
217
+
218
+We already have enough for a basic live meter UI from `pac1` and `pac2`.
219
+
220
+What is still likely hidden:
221
+
222
+- additional device settings
223
+- active page information
224
+- recording configuration
225
+- protocol-detection or trigger state
226
+- more complete data-group information
227
+
228
+### Do not over-trust current group mapping
229
+
230
+The app's `TC66C` parser only maps two groups, while the manuals talk more generally about groups and offline storage.
231
+
232
+Until verified, avoid hard-coding a stronger assumption than:
233
+
234
+- `TC66C` snapshots currently expose at least two group-like accumulators in our parser
235
+
236
+### Separate manual truth from protocol truth
237
+
238
+The manuals are strong for:
239
+
240
+- feature list
241
+- UX flow
242
+- transport family split
243
+- required `PD / CC pull-down` behavior
244
+
245
+The manuals are not enough for:
246
+
247
+- exact BLE field map
248
+- command framing completeness
249
+- full payload offsets
250
+
251
+## Suggested Verification Priorities
252
+
253
+1. confirm `FFE0/FFE4` notify and `FFE5/FFE9` write behavior against real `TC66C` hardware
254
+2. capture and archive one or more raw `192`-byte encrypted snapshots
255
+3. decrypt and annotate unknown bytes in `pac3`
256
+4. verify whether more than two data groups exist in BLE snapshots
257
+5. determine whether current device page is present in payload
258
+6. verify whether recording state and interval are exposed remotely
259
+7. promote candidate metadata fields in `pac1` from code comments to confirmed fields
260
+
261
+## Recommended Next Notes
262
+
263
+The next helpful artifacts for the repository would be:
264
+
265
+- a raw `TC66C` sample-capture note in `Payload Notes`
266
+- a byte-offset map for `pac1`, `pac2`, and `pac3`
267
+- an implementation checklist for exposing currently undocumented `TC66C` features in the UI
+37 -0
Documentation/Research Resources/README.md
@@ -6,6 +6,8 @@ Use it to collect:
6 6
 
7 7
 - manuals
8 8
 - vendor specifications
9
+- archived software packages
10
+- vendor contact information
9 11
 - screenshots or extracts of device information
10 12
 - protocol notes
11 13
 - payload descriptions
@@ -18,3 +20,38 @@ Suggested rule:
18 20
 - keep raw source material close to its origin
19 21
 - keep interpretation notes in Markdown
20 22
 - prefer small focused notes over large mixed documents
23
+
24
+Imported sources can include:
25
+
26
+- raw PDFs, DOCX, APK, RAR, and similar archival files
27
+- companion README notes describing provenance, duplicates, hashes, and extraction status
28
+
29
+## Folder Roles
30
+
31
+- `Manuals/`
32
+  Raw manuals and manual inventory notes.
33
+- `Software/`
34
+  Raw APKs, desktop packages, and notes about retained or intentionally skipped software artifacts.
35
+- `Vendor Contacts/`
36
+  Vendor contact documents and extracted contact details.
37
+- `Specifications/`
38
+  Curated product and family-level summaries derived from manuals and software.
39
+- `Payload Notes/`
40
+  Protocol-facing notes, field maps, framing assumptions, and verification targets.
41
+- `Related Projects/`
42
+  External reverse-engineering references that help us compare assumptions.
43
+
44
+## Retention Policy
45
+
46
+Keep in git:
47
+
48
+- source manuals that are directly cited by our notes
49
+- compact software artifacts that are useful for quick inspection
50
+- extracted Markdown notes that save future reverse-engineering time
51
+- one canonical copy of a duplicated vendor artifact
52
+
53
+Do not keep in regular git history by default:
54
+
55
+- very large archives that are expensive to clone and not yet central to active work
56
+- duplicate bundles that do not add new information
57
+- generated intermediate files created only during extraction
+29 -0
Documentation/Research Resources/Software/Android Apps/README.md
@@ -0,0 +1,29 @@
1
+# Android Apps
2
+
3
+This folder contains Android application packages collected as raw reference material.
4
+
5
+## Imported Files
6
+
7
+### `UM Meter_V3.0.5.apk`
8
+
9
+- status: added to repository
10
+- source: `UM24` archive
11
+- SHA-1: `b1427fba05c5fbcb64d9bab1f174a8eab63cc996`
12
+- extraction status: APK preserved as raw artifact; contents not yet analyzed
13
+- working applicability: likely broader than `UM24C` only; quick string scan shows RuiDeng branding but no immediate model lock
14
+
15
+### `RuiDeng_V1.0.2.apk`
16
+
17
+- status: added to repository
18
+- source: `UM24` archive
19
+- SHA-1: `25154f7ab5da6c727eab17ed903c1a8e06d82c71`
20
+- extraction status: APK preserved as raw artifact; contents not yet analyzed
21
+- working applicability: likely broader than `UM24C` only; quick string scan shows RuiDeng branding but no immediate model lock
22
+
23
+### `TC66C_V1.1.6.apk`
24
+
25
+- status: added to repository
26
+- source: `TC66` archive
27
+- SHA-1: `1054cc6122a3ac0668d1c6908b273bf24012ff39`
28
+- extraction status: APK preserved as raw artifact; quick inspection only
29
+- quick findings: string scan surfaced repeated `TC66C` markers, RuiDeng branding, and text indicating applicability to `TC66C` data acquisition display
BIN
Documentation/Research Resources/Software/Android Apps/RuiDeng_V1.0.2.apk
Binary file not shown.
BIN
Documentation/Research Resources/Software/Android Apps/TC66C_V1.1.6.apk
Binary file not shown.
BIN
Documentation/Research Resources/Software/Android Apps/UM Meter_V3.0.5.apk
Binary file not shown.
+25 -0
Documentation/Research Resources/Software/PC Software/README.md
@@ -0,0 +1,25 @@
1
+# PC Software
2
+
3
+This folder contains archived desktop software packages related to RuiDeng USB meters.
4
+
5
+## Imported Files
6
+
7
+### `UM24C PC Software V1.3.rar`
8
+
9
+- status: reviewed locally but intentionally not committed to regular git history
10
+- source: `UM24` archive
11
+- SHA-1: `b2e16ca006c185571bc0f7e3a1a79c4c13dbe9f1`
12
+- apparent scope: `UM24C`
13
+- archive status: preserved as raw artifact; detailed extraction not yet documented
14
+- initial observation: archive appears to contain a Windows installer tree with National Instruments / LabVIEW-related runtime components
15
+- compatibility note: quick archive scan did not surface direct `UM25` or `UM34` strings, so any broader applicability remains an inference only
16
+- retention note: excluded from this repository's normal history because the archive is very large relative to its current investigation value
17
+
18
+### `RuiDengUSBMeter_V1.0.0.6.rar`
19
+
20
+- status: added to repository
21
+- source: `TC66` archive
22
+- SHA-1: `10280f20f6979b4b2ee9468d89d0f9b2dd79d552`
23
+- apparent scope: likely `TC66` family desktop software
24
+- archive status: preserved as raw artifact; quick archive listing only
25
+- quick findings: archive contains `RuiDengUSBMeter.exe`, x86/x64 drivers, `CH.xaml`, `EN.xaml`, and bundled `.NET Framework 4.6`
BIN
Documentation/Research Resources/Software/PC Software/RuiDengUSBMeter_V1.0.0.6.rar
Binary file not shown.
+29 -0
Documentation/Research Resources/Software/README.md
@@ -0,0 +1,29 @@
1
+# Software
2
+
3
+Archive vendor or third-party software related to supported USB meter models here.
4
+
5
+Recommended contents:
6
+
7
+- Android applications
8
+- PC software packages
9
+- extracted binaries or installers when legally safe to preserve
10
+- companion notes about supported models, versions, and observed protocol hints
11
+
12
+Current status:
13
+
14
+- Android applications imported from the `UM24` archive
15
+- Android application imported from the `TC66` archive
16
+- compact `TC66` PC software archive retained in repository
17
+- large `UM24C` PC software archive inspected locally but intentionally not committed to regular git history because of size
18
+- font file from the archive intentionally not imported for now because it does not appear device-specific
19
+
20
+Working note:
21
+
22
+- some imported software artifacts appear branded at the RuiDeng family level rather than clearly tied to a single model
23
+- until deeper reverse engineering confirms scope, treat them as potentially relevant to `UM24C`, `UM25C`, and `UM34C`
24
+- the `TC66` archive also contains TC66-specific software artifacts that should be treated as a separate line unless overlap is later confirmed
25
+
26
+Retention note:
27
+
28
+- prefer keeping software artifacts that are small enough to clone comfortably and directly useful for protocol or workflow analysis
29
+- keep metadata notes for larger archives even when the archive itself stays out of git
+21 -0
Documentation/Research Resources/Specifications/README.md
@@ -8,3 +8,24 @@ Useful content for this folder:
8 8
 - service and characteristic UUID notes
9 9
 - device version comparisons
10 10
 - hardware revisions
11
+
12
+## Collected Notes
13
+
14
+### `UM24-UM25-UM34 Family Compatibility Note.md`
15
+
16
+- family-level compatibility and inference note across related USB testers
17
+
18
+### `UM34C Manual Working Summary.md`
19
+
20
+- working summary extracted from the imported `User_Manual_UM34C.pdf`
21
+- focuses on confirmed UI behavior, measurement features, storage semantics, app workflow, and caveats
22
+
23
+### `UM25 Manual Working Summary.md`
24
+
25
+- working summary extracted from the imported `UM25 User Manual.pdf`
26
+- focuses on confirmed `UM25/UM25C` capabilities, Android/iOS/Windows workflow, and transport caveats
27
+
28
+### `TC66 Manuals Working Summary.md`
29
+
30
+- combined working summary for the imported `TC66` Chinese and English manuals
31
+- focuses on model split, USB vs BLE communication, trigger and PD behavior, and PC/mobile workflow
+260 -0
Documentation/Research Resources/Specifications/TC66 Manuals Working Summary.md
@@ -0,0 +1,260 @@
1
+# TC66 Manuals Working Summary
2
+
3
+This note summarizes the two imported TC66 manuals as a working reference for the project.
4
+
5
+## Source Set
6
+
7
+### `TC66.pdf`
8
+
9
+- imported file: `Documentation/Research Resources/Manuals/TC66.pdf`
10
+- apparent scope: `TC66 / TC66C`
11
+- language: `zh-CN`
12
+- pages: `9`
13
+- title metadata: `TC66/TC66C`
14
+- creator metadata: `Microsoft Word 2010`
15
+- revision date inside manual: `2022-01-07`
16
+- SHA-1: `c9272064731ab462b6c872d92536d7291b2bda1d`
17
+
18
+### `User Maual for Operation and PC software and APP of TC66(C) Type-c USB PD Trigger Meter 2019.6.5.pdf`
19
+
20
+- imported file: `Documentation/Research Resources/Manuals/User Maual for Operation and PC software and APP of TC66(C) Type-c USB PD Trigger Meter 2019.6.5.pdf`
21
+- apparent scope: `TC66(C)` operation plus PC and mobile software
22
+- language: `en`
23
+- pages: `12`
24
+- creator metadata: `WPS 文字`
25
+- version label inside manual: `TC66/TC66C(2020.6.5)`
26
+- SHA-1: `a497356baab166af7cf0806e3095a59ad18f0276`
27
+
28
+## Reading Strategy
29
+
30
+Working interpretation of the two documents:
31
+
32
+- the English manual is the easier baseline for product behavior and software workflow
33
+- the Chinese manual is newer and appears to supersede or extend some product details
34
+- when the two overlap, treat the Chinese manual as the newer reference unless runtime evidence says otherwise
35
+
36
+## Confirmed Model Split
37
+
38
+- `TC66` supports USB communication only
39
+- `TC66C` supports USB and Bluetooth communication
40
+- Android and iPhone app support are described only for `TC66C`
41
+- PC software communicates with `TC66` and `TC66C` by `micro-USB`, not Bluetooth
42
+
43
+This split is one of the most important conclusions from the manuals.
44
+
45
+## Confirmed Device Capabilities
46
+
47
+- display: `0.96 inch` color `IPS`
48
+- screen resolution: `160 x 80`
49
+- voltage measurement range: `0.0050 V` to `30.0000 V`
50
+- current measurement range: `0` to `5.00000 A`
51
+- supply voltage: `3.5 V` to `24 V`
52
+- power range: `0` to `150 W`
53
+- voltage resolution: `0.0001 V`
54
+- current resolution: `0.00001 A`
55
+- capacity accumulation: `0-99999 mAh`
56
+- energy accumulation:
57
+  - older English manual: `0-99999 mWh` and `999.99 Wh`
58
+  - newer Chinese manual still speaks in `mWh`/`Wh` terms but does not restate the full line in the same layout
59
+- load impedance range:
60
+  - English manual: `1 Ω` to `9999.9 Ω`
61
+  - Chinese manual confirms load impedance display but not all values in the same line block
62
+- temperature range:
63
+  - measurement / working range in manuals centers on `0 C` to `45 C`
64
+- refresh rate: `2 Hz`
65
+
66
+## Product-Specific Behavior
67
+
68
+- this is a `Type-C` tester rather than the older USB-A style family
69
+- the product has hardware switches for:
70
+  - system power
71
+  - `PD`
72
+- there is also a `micro-USB` port for isolated power or PC connection
73
+- the manuals stress an important operating rule:
74
+  - turn `PD` or `CC pull-down` off during normal charging measurements
75
+  - turn it on for trigger and fast-charge protocol detection
76
+
77
+## UI and On-Device Pages
78
+
79
+The manuals describe eight default device pages:
80
+
81
+- main measurement
82
+- offline recording
83
+- quick-charge recognition
84
+- quick-charge protocol detection
85
+- trigger / decoy
86
+- system settings
87
+- system information
88
+- simple measurement
89
+
90
+### Main measurement page
91
+
92
+- shows voltage, current, capacity, energy, temperature, data-group number, load impedance, power, and current direction
93
+- long press `K1` clears the active data group
94
+- long press `K2` switches the data group
95
+
96
+### Data-group behavior
97
+
98
+- the manuals describe multiple data groups with `0` as a temporary group
99
+- group `0` restores and flashes the previous totals after reboot, then clears once accumulation exceeds `1 mAh`
100
+- at least group `1` persists totals across power cycles
101
+- the wording in the English manual appears truncated around group numbering, so group semantics should be verified on-device before we hard-code exact persistence rules for every group
102
+
103
+### Offline recording page
104
+
105
+- records measurements into onboard storage
106
+- configurable recording interval: `1` to `60` seconds
107
+- total recording duration ranges roughly from `24 minutes` to `24 hours`, depending on interval
108
+- recording pauses automatically after power loss
109
+- stored data can be cleared from the device menu
110
+
111
+### Quick-charge recognition
112
+
113
+- reports `D+` and `D-` levels
114
+- recognizes at least:
115
+  - `QC2.0`
116
+  - `QC3.0`
117
+  - Apple `2.4A / 2.1A / 1A / 0.5A`
118
+  - `Android DCP`
119
+  - `Samsung`
120
+- manuals say recognition is only a reference indication
121
+
122
+### Protocol detection
123
+
124
+- dangerous operation that can make the USB-C side output high voltage
125
+- manuals say to disconnect the load before running detection
126
+- supported auto-detection includes:
127
+  - `QC2.0`
128
+  - `QC3.0`
129
+  - Huawei `FCP`
130
+  - Huawei `SCP`
131
+  - Samsung `AFC`
132
+  - `PD`
133
+
134
+### Trigger / decoy
135
+
136
+- supported trigger families include:
137
+  - `QC2.0`
138
+  - `QC3.0`
139
+  - Huawei `FCP`
140
+  - Huawei `SCP`
141
+  - Samsung `AFC`
142
+  - `PD2.0`
143
+  - `PPS`
144
+- `PD` mode allows switching supported voltages and adjusting step value for `PPS`
145
+- after most trigger modes, unplugging and replugging is required to return to `5 V`
146
+
147
+### Settings
148
+
149
+- auto screen-off:
150
+  - `0-9` minutes
151
+  - `0` means always on
152
+- brightness:
153
+  - Chinese manual says `10` levels
154
+- temperature unit:
155
+  - `C` / `F`
156
+- PC communication switch
157
+- Bluetooth switch
158
+- screen rotation
159
+- `PD` software switch / `CC line mode`
160
+- language choice
161
+- restore factory settings
162
+
163
+Important behavior from the newer Chinese manual:
164
+
165
+- enabling `CC pull-down` can auto-light the screen on PD chargers
166
+- `CC pull-down` may affect normal charging measurement
167
+- if measuring PD charging behavior, turn `CC pull-down` off
168
+- if doing protocol detection or trigger, `CC pull-down` must be on and no load should be connected
169
+
170
+## System and Recovery Notes
171
+
172
+- system info page includes serial number, firmware version, boot count, and current runtime
173
+- abnormal-state recovery:
174
+  - hold `K2` during power-on to restore factory settings
175
+  - hold `K1` during power-on to enter boot mode for firmware update
176
+
177
+## PC Software
178
+
179
+- supported OS:
180
+  - Chinese manual: `Windows 7` to `Windows 10`
181
+  - English manual: `Windows 7 and above`
182
+- PC communication is via `micro-USB`
183
+- manuals mention `RuiDengUSBMeter` desktop software
184
+- first-time use requires driver installation
185
+- firmware update is performed from PC software while booting the device into update mode
186
+
187
+Important workflow details:
188
+
189
+- avoid USB hubs with compatibility issues; prefer a native computer USB port
190
+- offline data can be downloaded into the PC application
191
+- viewing offline data pauses real-time curve recording
192
+- the graph can export table and image data
193
+- manual software version references:
194
+  - English manual: `V1.0.0.5`
195
+  - newer Chinese manual: `V1.0.0.6`
196
+
197
+## Android App
198
+
199
+- Android support:
200
+  - English manual: `Android 5.0+`
201
+  - newer Chinese manual narrows expectation to `Android 5.0-10.0`
202
+- Bluetooth requirement: `BLE 4.0+`
203
+- app support is only for `TC66C`
204
+- Android `6.0+` requires location permission for BLE scanning
205
+- BLE devices must be discovered in the app, not through system Bluetooth settings
206
+
207
+App and distribution notes:
208
+
209
+- English manual points to Google Play search `TC66C`
210
+- newer Chinese manual points to Google Play search `RuiDeng`
211
+- manual also references direct download from RuiDeng download pages
212
+- export of recorded data to spreadsheet form is supported
213
+- version references:
214
+  - English manual: Android app `V1.1.1`
215
+  - newer Chinese manual: Android app `V1.0.3`
216
+
217
+The version mismatch likely reflects different release snapshots rather than a contradiction in core behavior.
218
+
219
+## iPhone App
220
+
221
+- iPhone app only supports `TC66C`
222
+- iOS support:
223
+  - English manual: `iOS 8.0+`
224
+  - newer Chinese manual: `iOS 8.0` to `iOS 14`
225
+- App Store search terms differ by manual:
226
+  - English manual: `TC66C`
227
+  - Chinese manual: `TC66C`
228
+- version references:
229
+  - English manual: `1.2.0`
230
+  - newer Chinese manual: `1.2.3`
231
+
232
+## Important Scope Conclusions for This Project
233
+
234
+- `TC66` and `TC66C` should not be treated as identical communication targets
235
+- app support is explicitly `TC66C`-only
236
+- Bluetooth behavior for `TC66C` is explicitly `BLE`, not classic serial Bluetooth
237
+- desktop integration for the `TC66` family is explicitly USB-based
238
+- `PD` / `CC pull-down` state is likely relevant to what users see and may affect how measurements behave
239
+
240
+## Implementation-Relevant Concepts
241
+
242
+Concepts likely worth reflecting in app state or decoding assumptions:
243
+
244
+- active page
245
+- active data group
246
+- temporary vs persistent accumulation behavior
247
+- offline recording state and interval
248
+- quick-charge recognition result
249
+- protocol-detection support matrix
250
+- trigger protocol and selected voltage
251
+- `PD` or `CC pull-down` switch state
252
+- Bluetooth enabled / disabled state on `TC66C`
253
+- firmware version and serial number
254
+
255
+## Open Questions
256
+
257
+- exact data-group count and persistence behavior across all groups on current firmware
258
+- whether Bluetooth payloads expose all device pages or only a subset
259
+- whether the mobile apps expose offline-recording management or only live data and export
260
+- whether English and Chinese manuals map to distinct firmware branches or only different documentation snapshots
+43 -0
Documentation/Research Resources/Specifications/TC66 Resource Inventory.md
@@ -0,0 +1,43 @@
1
+# TC66 Resource Inventory
2
+
3
+This note captures what was directly observed from the archived `TC66` resource bundle before any deeper reverse engineering.
4
+
5
+## Imported Artifacts
6
+
7
+- `TC66.pdf`
8
+- `User Maual for Operation and PC software and APP of TC66(C) Type-c USB PD Trigger Meter 2019.6.5.pdf`
9
+- `TC66C_V1.1.6.apk`
10
+- `RuiDengUSBMeter_V1.0.0.6.rar`
11
+
12
+## Skipped Duplicate
13
+
14
+- `Factory technical support and  conctact way .docx`
15
+  Reason: byte-for-byte duplicate of the contact document already imported from the `UM24` archive
16
+
17
+## Quick Findings
18
+
19
+- `TC66.pdf` is a shorter 9-page document with title metadata `TC66/TC66C`
20
+- the longer `User Maual ... TC66(C) ... 2019.6.5.pdf` appears intended to cover device operation plus PC and Android software usage
21
+- string scan of `TC66C_V1.1.6.apk` surfaced repeated `TC66C` identifiers and RuiDeng branding, which makes this artifact more model-specific than the generic UM-family APKs
22
+- quick archive listing of `RuiDengUSBMeter_V1.0.0.6.rar` shows a Windows desktop application, English and Chinese language files, x86/x64 drivers, and a bundled `.NET Framework 4.6` installer
23
+
24
+## Review Status
25
+
26
+- both imported TC66 manuals have now been text-reviewed
27
+- the working synthesis is recorded in `TC66 Manuals Working Summary.md`
28
+
29
+## Key Confirmations From Manual Review
30
+
31
+- `TC66` is USB-only
32
+- `TC66C` supports USB and Bluetooth
33
+- Android app support is `TC66C`-only and explicitly BLE-based
34
+- iPhone app support is `TC66C`-only
35
+- desktop software communicates over `micro-USB`, not Bluetooth
36
+- the manuals make `PD` / `CC pull-down` state an important part of correct measurement behavior
37
+
38
+## Practical Use
39
+
40
+- manuals may provide UI, feature, and workflow clues specific to `TC66(C)`
41
+- the Android APK is a good candidate for later string extraction or decompilation when we need model-specific labels and behavior hints
42
+- the PC software archive may be useful for identifying USB/driver assumptions and desktop-side workflows even before full extraction
43
+- the payload working note `TC66C Transport and Payload Working Note.md` now records how the current app models `TC66C` transport and decoded fields
+39 -0
Documentation/Research Resources/Specifications/UM24-UM25-UM34 Family Compatibility Note.md
@@ -0,0 +1,39 @@
1
+# UM24 / UM25 / UM34 Family Compatibility Note
2
+
3
+This note records what can currently be inferred from the archived `UM24` resource bundle about the `UM24C`, `UM25C`, and `UM34C` family.
4
+
5
+## Confirmed Facts
6
+
7
+- the archived manual is explicitly labeled `UM24C`
8
+- the archived PC software package is explicitly labeled `UM24C`
9
+- the `UM24` line is known to use classic Bluetooth serial-port style communication and is not intended to be supported by this application
10
+- the newly imported `User_Manual_UM34C.pdf` uses mixed model labels internally: `UM25/UM25C` in one heading and `UM34/UM34C` in the technical parameter section
11
+- the same newly imported PDF titles its app section `UM34C Android APP Instruction`
12
+- a separate `UM25` manual has now been imported as `Documentation/Research Resources/Manuals/UM25 User Manual.pdf`
13
+- the `UM25` manual explicitly includes Android app, iOS app, and Windows PC software sections for `UM25C`
14
+- the two Android APKs are branded more generically around RuiDeng / `UM Meter`
15
+- the duplicate "3 in 1" PDF is byte-for-byte identical to the already imported `UM24C` manual
16
+
17
+## Quick Inspection Results
18
+
19
+- quick string scans of the Android APKs surfaced RuiDeng branding but did not immediately expose model-specific names such as `UM25` or `UM34`
20
+- quick string scan of the PC software archive surfaced `UM24C` labeling and installer/runtime filenames, but no direct `UM25` or `UM34` hits
21
+- the imported `UM34C` PDF reads like an operational manual for the same product family and strengthens the case that RuiDeng reused documentation structure across closely related models
22
+- the newly added `UM25` PDF likely gives us a cleaner model-specific source for separating `UM25` behavior from `UM24C` and `UM34C`, but it still needs review
23
+- the reviewed `UM25` PDF confirms that `UM25C` had official Android, iOS, and Windows software support, which makes it a better primary product reference than the older `UM24C` manual
24
+- the existing external project note for `floriandotorg/um24c` remains the stronger indication that `UM24C`, `UM25C`, and `UM34C` are closely related at the protocol level
25
+
26
+## Working Assumption
27
+
28
+- use the imported Android applications and vendor contact document as family-level reference material that may still help with `UM25C` and `UM34C`
29
+- exclude classic-Bluetooth `UM24` support from current application scope
30
+- use the imported `User_Manual_UM34C.pdf` as a family-level UI and feature reference, while keeping its model-specific claims tentative
31
+- use the reviewed `UM25` manual as the current best product-level reference for `UM25C`
32
+- use the imported manual and PC software primarily as `UM24C` references until stronger cross-model evidence is found
33
+
34
+## Practical Implication
35
+
36
+- focus implementation effort on the app-supported `UM25C` / `UM34C` direction rather than classic-Bluetooth `UM24`
37
+- treat the `UM25` manual as the best current guide for user-visible features and supported control surfaces
38
+- for payload decoding and Bluetooth behavior, keep comparing `UM25C` and `UM34C` observations against `UM24C` notes
39
+- for UI, wording, and software workflow clues, the imported APKs may be useful even if the desktop package stays `UM24C`-centric
+194 -0
Documentation/Research Resources/Specifications/UM25 Manual Working Summary.md
@@ -0,0 +1,194 @@
1
+# UM25 Manual Working Summary
2
+
3
+This note summarizes the imported manual [`UM25 User Manual.pdf`](../Manuals/UM25%20User%20Manual.pdf) as a working reference for the project.
4
+
5
+## Source Snapshot
6
+
7
+- imported file: `Documentation/Research Resources/Manuals/UM25 User Manual.pdf`
8
+- source filename: `98c297e2b477494d7de0babe2b77877749c3.pdf`
9
+- model label in manual: `UM25/UM25C`
10
+- manual date: `2019.9.24`
11
+- pages: `27`
12
+- creator metadata: `WPS 文字`
13
+- SHA-1: `518898c297e2b477494d7de0babe2b77877749c3`
14
+
15
+## Why This Source Matters
16
+
17
+Compared with the previously imported `UM34C` PDF, this manual is a cleaner product reference for `UM25/UM25C`.
18
+
19
+Confirmed scope improvements:
20
+
21
+- the title page explicitly says `UM25/UM25C`
22
+- the table of contents includes Android app, iOS app, and PC control software sections
23
+- the technical parameter block is internally consistent with `UM25/UM25C`
24
+
25
+## Confirmed Device Capabilities
26
+
27
+- color LCD display: `1.44 inch`
28
+- measurement ranges:
29
+  - voltage: `4-24.000 V`
30
+  - current: `0-5.0000 A`
31
+  - capacity: `0-99999 mAh`
32
+  - energy: `0-99999 mWh`
33
+  - temperature: `-10 C to 100 C`
34
+- measurement resolutions:
35
+  - voltage: `0.001 V`
36
+  - current: `0.0001 A`
37
+- accuracy claims:
38
+  - voltage: `±(0.5‰ + 2 digits)`
39
+  - current: `±(1‰ + 4 digits)`
40
+- refresh rate: `2 Hz`
41
+- quick-charge recognition claims support for:
42
+  - `QC2.0`
43
+  - `QC3.0`
44
+  - Apple `2.4A / 2.1A / 1A / 0.5A`
45
+  - `Android DCP`
46
+  - `SAMSUNG`
47
+
48
+## Hardware and UI Notes
49
+
50
+- hardware layout includes:
51
+  - `Micro USB` port
52
+  - `USB-A female` port
53
+  - `USB-A male` port
54
+  - `Type-C input` port
55
+  - `Type-C output` port
56
+  - Bluetooth switch
57
+  - Bluetooth indicator
58
+- the manual says both Type-C ports expose only `VBUS`, `GND`, `CC1`, and `CC2`
59
+- the interface model is the same six-page pattern seen in related manuals:
60
+  - main measurement
61
+  - quick-charge recognition
62
+  - charging record
63
+  - cable impedance measurement
64
+  - graphing
65
+  - system settings
66
+
67
+## Measurement and Storage Behavior
68
+
69
+- the main screen shows voltage, current, power, temperature, accumulated `mAh`, accumulated `mWh`, load impedance, and active data-group index
70
+- the device provides `10` data groups: `0-9`
71
+- groups `1-9` persist accumulated `mAh` and `mWh` across power cycles
72
+- group `0` is temporary and resets once accumulation resumes past `1 mAh`
73
+- holding `PREV` clears the active group totals
74
+
75
+## Recording and Cable Testing
76
+
77
+- recording starts automatically when current rises above the configured low-current trigger
78
+- trigger range: `0.01 A` to `0.30 A`
79
+- graphing includes:
80
+  - voltage/current over time
81
+  - `D+` / `D-` voltage over time
82
+- cable resistance mode uses a two-step differential measurement:
83
+  1. measure directly at the charger under load
84
+  2. repeat through the cable under test at the same load
85
+
86
+Practical notes from the manual:
87
+
88
+- recommended cable-test load is approximately `1 A`
89
+- if voltage drop is too high, the tester can power down near `4 V`
90
+- the tester must be power-cycled after cable-resistance measurement to resume normal mode
91
+
92
+## Settings
93
+
94
+- auto screen-off: `0-9 min`
95
+- brightness: `0-5`
96
+- temperature unit: `C` / `F`
97
+- theme background color
98
+- theme foreground color
99
+- hidden boot menu options:
100
+  - Chinese UI
101
+  - English UI
102
+  - reset settings
103
+
104
+## Android App Notes
105
+
106
+Confirmed from the manual:
107
+
108
+- minimum Android version: `5.0`
109
+- app distribution:
110
+  - vendor MediaFire folder for `UM25`
111
+  - Google Play search term: `UM Meter`
112
+- pairing code: `1234`
113
+- app features include:
114
+  - Bluetooth connection
115
+  - export to phone storage
116
+  - sharing exported files to other apps
117
+  - multi-language UI
118
+  - voltage/current graph
119
+  - quick-charge mode display
120
+  - `D+` / `D-` voltage display
121
+  - brightness and screen-off adjustment
122
+  - temperature-unit switching
123
+  - data-group switching
124
+  - data-group clearing
125
+  - screen rotation
126
+  - low-current trigger adjustment
127
+
128
+## iOS App Notes
129
+
130
+Confirmed from the manual:
131
+
132
+- minimum iOS version: `8.0`
133
+- App Store search term: `UM Meter`
134
+- workflow described by the manual:
135
+  - tap `Find` to discover nearby Bluetooth devices
136
+  - connect to the device
137
+  - enter `data communication`
138
+  - export form files
139
+  - share exported files to other apps
140
+  - select language in the personal center
141
+- manual states the iOS app version matching the document is `1.2.1`
142
+
143
+## PC Software Notes
144
+
145
+- explicitly labeled for `UM25C`
146
+- supported OS: `Windows 7 and above`
147
+- manual references PC package `UM25C PC Software V1.3.zip`
148
+- manual says to install `Arial Unicode MS` before unzipping/installing
149
+- PC connection flow:
150
+  - enable device Bluetooth
151
+  - pair from Windows
152
+  - inspect Bluetooth COM-port assignment
153
+  - use the outgoing COM port labeled for `UM25C`
154
+  - connect once the tester Bluetooth indicator becomes steady
155
+
156
+Important PC notes from the manual:
157
+
158
+- prefer the Windows built-in Bluetooth driver, not the adapter vendor driver
159
+- after power-cycling the tester, select the COM port again
160
+- do not press tester buttons during communication because error data may appear
161
+- exported graph data is intended for Microsoft Office Excel
162
+
163
+## Relevance for This Project
164
+
165
+Useful as a product-behavior reference:
166
+
167
+- confirms `UM25/UM25C` as a distinct documented model family
168
+- confirms the same six-page device UI model used in related manuals
169
+- confirms app-visible concepts we may need to represent in our model:
170
+  - active data group
171
+  - quick-charge mode
172
+  - `D+` / `D-` levels
173
+  - graph pages
174
+  - low-current trigger
175
+  - brightness and screen-off settings
176
+- confirms that `UM25C` had vendor-supported Android, iOS, and Windows software
177
+
178
+Important transport caveat:
179
+
180
+- the PC section clearly describes Bluetooth COM-port use, which fits classic serial-port style communication on Windows
181
+- the same manual also describes an iOS app, which means transport behavior cannot be reduced to the PC workflow alone
182
+- for implementation, radio and protocol details still need to be verified from runtime captures or app analysis before we lock assumptions
183
+
184
+## Relationship to Current App Scope
185
+
186
+- `UM24` classic-Bluetooth serial support remains out of scope for this application
187
+- this manual makes `UM25C` a higher-priority reference than `UM24C` for supported-device investigation
188
+- the `C` variants remain the main target family until runtime evidence suggests otherwise
189
+
190
+## Open Questions
191
+
192
+- whether `UM25C` uses one Bluetooth mode for Android/Windows and another for iOS
193
+- whether the iOS app talks to the same payload structure as Android and PC software
194
+- whether `UM34C` and `UM25C` share identical transport and field mappings
+156 -0
Documentation/Research Resources/Specifications/UM34C Manual Working Summary.md
@@ -0,0 +1,156 @@
1
+# UM34C Manual Working Summary
2
+
3
+This note summarizes the imported manual [`User_Manual_UM34C.pdf`](../Manuals/User_Manual_UM34C.pdf) as a working reference for the project.
4
+
5
+## Source Snapshot
6
+
7
+- imported file: `Documentation/Research Resources/Manuals/User_Manual_UM34C.pdf`
8
+- source filename: `User_Manual_UM34C.pdf`
9
+- pages: `12`
10
+- creator metadata: `Microsoft Word 2016`
11
+- SHA-1: `71f6ccae85ba6930e626208e24f66dead07d3e52`
12
+
13
+## Scope and Labeling Caveat
14
+
15
+The document should be treated as a family-level reference, not yet a clean single-model specification.
16
+
17
+Confirmed inconsistencies inside the PDF:
18
+
19
+- the source filename points to `UM34C`
20
+- the first instruction heading says `-Model: UM25/UM25C`
21
+- the technical parameter block says `Model: UM34/UM34C`
22
+- the app section is titled `UM34C Android APP Instruction`
23
+
24
+Working interpretation:
25
+
26
+- the manual most likely describes a closely related `UM25C` / `UM34C` family device
27
+- UI flow and user-facing features are likely reusable across the family
28
+- protocol details should not be assumed from this manual alone because it is operational documentation, not a transport spec
29
+
30
+## Confirmed Device Capabilities
31
+
32
+- color LCD display: `1.44 inch`
33
+- measurement ranges:
34
+  - voltage: `4-24.00 V`
35
+  - current: `0-4.000 A`
36
+  - capacity: `0-99999 mAh`
37
+  - energy: `0-99999 mWh` and `0-999.99 Wh`
38
+  - temperature: `-10 C to 100 C`
39
+- refresh rate: `2 Hz`
40
+- quick-charge recognition claims support for:
41
+  - `QC2.0`
42
+  - `QC3.0`
43
+  - Apple `2.4A / 2.1A / 1A / 0.5A`
44
+  - `Android DCP`
45
+  - `SAMSUNG`
46
+- port and hardware notes:
47
+  - USB 3.0 `A male`
48
+  - USB 3.0 `A female`
49
+  - `Micro USB`
50
+  - `Type-C input`
51
+  - Bluetooth switch and Bluetooth status indicator are present on the `C` variant
52
+
53
+## Important Functional Notes
54
+
55
+### Measurement and storage
56
+
57
+- the main screen exposes voltage, current, power, temperature, accumulated `mAh`, accumulated `mWh`, load impedance, and current data-group index
58
+- the tester offers `10` data groups: `0-9`
59
+- groups `1-9` persist accumulated `mAh` and `mWh` across power cycles
60
+- group `0` behaves as temporary storage and is cleared when accumulation resumes beyond `1 mAh`
61
+- holding `PREV` clears the current accumulated `mAh` and `mWh`
62
+
63
+### Screen flow
64
+
65
+The manual describes six interface pages:
66
+
67
+- main measurement interface
68
+- quick-charge recognition interface
69
+- charging record interface
70
+- data cable impedance measurement interface
71
+- graphing interface
72
+- system parameter setting interface
73
+
74
+### Recording behavior
75
+
76
+- charging record mode auto-starts when current rises above a configurable trigger
77
+- trigger range: `0.01 A` to `0.30 A`
78
+- the device records accumulated capacity, energy, and elapsed time
79
+
80
+### Cable resistance measurement
81
+
82
+The cable test is a two-step differential measurement:
83
+
84
+1. connect the tester directly to the power supply and record voltage/current under load
85
+2. reconnect through the cable under test at the same load and record again
86
+
87
+Practical implications:
88
+
89
+- the manual recommends approximately `1 A` load for the test
90
+- if voltage drop is too high, the tester can brown out near `4 V`
91
+- after finishing the cable-resistance test, the manual says the tester must be power-cycled to return to normal measurement
92
+
93
+### Graphing
94
+
95
+- one graph view shows voltage and current over time
96
+- a second graph view shows `D+` / `D-` voltages over time
97
+
98
+### Settings
99
+
100
+User-facing settings documented in the manual:
101
+
102
+- auto screen-off: `0-9 min`
103
+- brightness: `0-5`
104
+- temperature unit: `C` / `F`
105
+- theme background color
106
+- theme foreground color
107
+
108
+## Android App Notes
109
+
110
+The manual includes an Android app section, but still at workflow level only.
111
+
112
+Confirmed app notes:
113
+
114
+- minimum Android version: `5.0`
115
+- pairing code: `0000` or `1234`
116
+- the app can:
117
+  - connect over Bluetooth
118
+  - export recorded data to phone storage
119
+  - switch language
120
+  - display graph pages
121
+  - show quick-charge and `D+` / `D-` values
122
+  - adjust brightness and screen-off timer
123
+  - switch temperature units
124
+  - clear current data group
125
+  - rotate the tester display
126
+  - adjust low-current trigger value
127
+
128
+## Relevance for This Project
129
+
130
+Useful as a product-behavior reference:
131
+
132
+- confirms the user-visible page model and feature set
133
+- confirms persistent data groups and their semantics
134
+- confirms graphing and recording features that may exist in app or payload state
135
+- confirms Bluetooth control exists on the `C` variant
136
+- confirms `D+` / `D-` readings and quick-charge mode are first-class features
137
+
138
+Not sufficient as a protocol reference:
139
+
140
+- no BLE services, characteristics, or packet format are documented
141
+- no field-level payload mapping is documented
142
+- no desktop or mobile transport framing is documented
143
+- no model-to-model compatibility table is documented
144
+
145
+## Working Assumptions
146
+
147
+- treat this manual as valid for shared UI concepts across at least part of the `UM25C` / `UM34C` family
148
+- do not treat quick-charge detection strings as authoritative protocol identifiers
149
+- do not assume the USB-C input is a full Type-C measurement path; the manual limits it to a narrower role
150
+- continue comparing runtime observations with this manual before promoting anything to a hard specification
151
+
152
+## Open Questions
153
+
154
+- whether `UM25C` and `UM34C` expose identical Bluetooth payloads
155
+- whether the Android app supports more device variants than the manual title suggests
156
+- whether the non-`C` variants share the same UI/page layout but without Bluetooth control
BIN
Documentation/Research Resources/Vendor Contacts/Factory technical support and conctact way .docx
Binary file not shown.
+20 -0
Documentation/Research Resources/Vendor Contacts/README.md
@@ -0,0 +1,20 @@
1
+# Vendor Contacts
2
+
3
+This folder stores vendor contact documents and notes extracted from archived material.
4
+
5
+## Imported Files
6
+
7
+### `Factory technical support and  conctact way .docx`
8
+
9
+- status: added to repository
10
+- source: `UM24` archive
11
+- SHA-1: `f1bda965c4845e51fe901d49a3ebb52f6fc9fbbb`
12
+- extraction status: key contact fields manually extracted
13
+- duplicate note: the same file was also present in the `TC66` archive and was not imported twice
14
+
15
+## Extracted Contact Fields
16
+
17
+- email: `1749808860@qq.com`
18
+- WeChat: `15868147353`
19
+- AliExpress store: `https://rdtech.aliexpress.com/store/923042`
20
+- YouTube: `https://www.youtube.com/channel/UCy73jJ5-ZqhPzT7wJ6KTIaw?view_as=subscriber`
+72 -0
USB Meter.xcodeproj/project.pbxproj
@@ -57,9 +57,29 @@
57 57
 		1C6B6B8B2A2D4F5100A0B001 /* Project History.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "Project History.md"; sourceTree = "<group>"; };
58 58
 		1C6B6B8D2A2D4F5100A0B001 /* Research Resources README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
59 59
 		1C6B6B8F2A2D4F5100A0B001 /* Manuals README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
60
+		1C6B6B972A2D4F5100A0B001 /* USB tester UM24C - User Manual.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "USB tester UM24C - User Manual.pdf"; sourceTree = "<group>"; };
61
+		1C6B6BA52A2D4F5100A0B001 /* TC66.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = TC66.pdf; sourceTree = "<group>"; };
62
+		1C6B6BA62A2D4F5100A0B001 /* User Maual for Operation and PC software and APP of TC66(C) Type-c USB PD Trigger Meter 2019.6.5.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "User Maual for Operation and PC software and APP of TC66(C) Type-c USB PD Trigger Meter 2019.6.5.pdf"; sourceTree = "<group>"; };
63
+		1C6B6BAA2A2D4F5100A0B001 /* UM25 User Manual.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "UM25 User Manual.pdf"; sourceTree = "<group>"; };
64
+		1C6B6BAB2A2D4F5100A0B001 /* User_Manual_UM34C.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = User_Manual_UM34C.pdf; sourceTree = "<group>"; };
65
+		1C6B6B982A2D4F5100A0B001 /* Software README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
66
+		1C6B6B992A2D4F5100A0B001 /* Android Apps README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
67
+		1C6B6B9A2A2D4F5100A0B001 /* PC Software README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
68
+		1C6B6B9B2A2D4F5100A0B001 /* Vendor Contacts README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
69
+		1C6B6B9C2A2D4F5100A0B001 /* UM Meter_V3.0.5.apk */ = {isa = PBXFileReference; lastKnownFileType = file; path = "UM Meter_V3.0.5.apk"; sourceTree = "<group>"; };
70
+		1C6B6B9D2A2D4F5100A0B001 /* RuiDeng_V1.0.2.apk */ = {isa = PBXFileReference; lastKnownFileType = file; path = RuiDeng_V1.0.2.apk; sourceTree = "<group>"; };
71
+		1C6B6BA72A2D4F5100A0B001 /* TC66C_V1.1.6.apk */ = {isa = PBXFileReference; lastKnownFileType = file; path = TC66C_V1.1.6.apk; sourceTree = "<group>"; };
72
+		1C6B6BA82A2D4F5100A0B001 /* RuiDengUSBMeter_V1.0.0.6.rar */ = {isa = PBXFileReference; lastKnownFileType = file; path = RuiDengUSBMeter_V1.0.0.6.rar; sourceTree = "<group>"; };
73
+		1C6B6B9F2A2D4F5100A0B001 /* Factory technical support and  conctact way .docx */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Factory technical support and  conctact way .docx"; sourceTree = "<group>"; };
60 74
 		1C6B6B912A2D4F5100A0B001 /* Specifications README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
75
+		1C6B6BA42A2D4F5100A0B001 /* UM24-UM25-UM34 Family Compatibility Note.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "UM24-UM25-UM34 Family Compatibility Note.md"; sourceTree = "<group>"; };
76
+		1C6B6BA92A2D4F5100A0B001 /* TC66 Resource Inventory.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "TC66 Resource Inventory.md"; sourceTree = "<group>"; };
77
+		1C6B6BAC2A2D4F5100A0B001 /* UM34C Manual Working Summary.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "UM34C Manual Working Summary.md"; sourceTree = "<group>"; };
78
+		1C6B6BAD2A2D4F5100A0B001 /* UM25 Manual Working Summary.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "UM25 Manual Working Summary.md"; sourceTree = "<group>"; };
79
+		1C6B6BAE2A2D4F5100A0B001 /* TC66 Manuals Working Summary.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "TC66 Manuals Working Summary.md"; sourceTree = "<group>"; };
61 80
 		1C6B6B932A2D4F5100A0B001 /* Payload Notes README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
62 81
 		1C6B6B962A2D4F5100A0B001 /* UM24C-UM25C-UM34C from floriandotorg-um24c.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "UM24C-UM25C-UM34C from floriandotorg-um24c.md"; sourceTree = "<group>"; };
82
+		1C6B6BAF2A2D4F5100A0B001 /* TC66C Transport and Payload Working Note.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "TC66C Transport and Payload Working Note.md"; sourceTree = "<group>"; };
63 83
 		4308CF8524176CAB0002E80B /* DataGroupRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataGroupRowView.swift; sourceTree = "<group>"; };
64 84
 		4308CF872417770D0002E80B /* DataGroupsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataGroupsView.swift; sourceTree = "<group>"; };
65 85
 		430CB4FB245E07EB006525C2 /* ChevronView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChevronView.swift; sourceTree = "<group>"; };
@@ -134,6 +154,8 @@
134 154
 			children = (
135 155
 				1C6B6B8D2A2D4F5100A0B001 /* Research Resources README.md */,
136 156
 				1C6B6B8E2A2D4F5100A0B001 /* Manuals */,
157
+				1C6B6BA02A2D4F5100A0B001 /* Software */,
158
+				1C6B6BA32A2D4F5100A0B001 /* Vendor Contacts */,
137 159
 				1C6B6B902A2D4F5100A0B001 /* Specifications */,
138 160
 				1C6B6B922A2D4F5100A0B001 /* Payload Notes */,
139 161
 			);
@@ -144,6 +166,11 @@
144 166
 			isa = PBXGroup;
145 167
 			children = (
146 168
 				1C6B6B8F2A2D4F5100A0B001 /* Manuals README.md */,
169
+				1C6B6B972A2D4F5100A0B001 /* USB tester UM24C - User Manual.pdf */,
170
+				1C6B6BA52A2D4F5100A0B001 /* TC66.pdf */,
171
+				1C6B6BA62A2D4F5100A0B001 /* User Maual for Operation and PC software and APP of TC66(C) Type-c USB PD Trigger Meter 2019.6.5.pdf */,
172
+				1C6B6BAB2A2D4F5100A0B001 /* User_Manual_UM34C.pdf */,
173
+				1C6B6BAA2A2D4F5100A0B001 /* UM25 User Manual.pdf */,
147 174
 			);
148 175
 			path = Manuals;
149 176
 			sourceTree = "<group>";
@@ -152,15 +179,60 @@
152 179
 			isa = PBXGroup;
153 180
 			children = (
154 181
 				1C6B6B912A2D4F5100A0B001 /* Specifications README.md */,
182
+				1C6B6BA42A2D4F5100A0B001 /* UM24-UM25-UM34 Family Compatibility Note.md */,
183
+				1C6B6BA92A2D4F5100A0B001 /* TC66 Resource Inventory.md */,
184
+				1C6B6BAC2A2D4F5100A0B001 /* UM34C Manual Working Summary.md */,
185
+				1C6B6BAD2A2D4F5100A0B001 /* UM25 Manual Working Summary.md */,
186
+				1C6B6BAE2A2D4F5100A0B001 /* TC66 Manuals Working Summary.md */,
155 187
 			);
156 188
 			path = Specifications;
157 189
 			sourceTree = "<group>";
158 190
 		};
191
+		1C6B6BA02A2D4F5100A0B001 /* Software */ = {
192
+			isa = PBXGroup;
193
+			children = (
194
+				1C6B6B982A2D4F5100A0B001 /* Software README.md */,
195
+				1C6B6BA12A2D4F5100A0B001 /* Android Apps */,
196
+				1C6B6BA22A2D4F5100A0B001 /* PC Software */,
197
+			);
198
+			path = Software;
199
+			sourceTree = "<group>";
200
+		};
201
+		1C6B6BA12A2D4F5100A0B001 /* Android Apps */ = {
202
+			isa = PBXGroup;
203
+			children = (
204
+				1C6B6B992A2D4F5100A0B001 /* Android Apps README.md */,
205
+				1C6B6B9D2A2D4F5100A0B001 /* RuiDeng_V1.0.2.apk */,
206
+				1C6B6B9C2A2D4F5100A0B001 /* UM Meter_V3.0.5.apk */,
207
+				1C6B6BA72A2D4F5100A0B001 /* TC66C_V1.1.6.apk */,
208
+			);
209
+			path = "Android Apps";
210
+			sourceTree = "<group>";
211
+		};
212
+		1C6B6BA22A2D4F5100A0B001 /* PC Software */ = {
213
+			isa = PBXGroup;
214
+			children = (
215
+				1C6B6B9A2A2D4F5100A0B001 /* PC Software README.md */,
216
+				1C6B6BA82A2D4F5100A0B001 /* RuiDengUSBMeter_V1.0.0.6.rar */,
217
+			);
218
+			path = "PC Software";
219
+			sourceTree = "<group>";
220
+		};
221
+		1C6B6BA32A2D4F5100A0B001 /* Vendor Contacts */ = {
222
+			isa = PBXGroup;
223
+			children = (
224
+				1C6B6B9B2A2D4F5100A0B001 /* Vendor Contacts README.md */,
225
+				1C6B6B9F2A2D4F5100A0B001 /* Factory technical support and  conctact way .docx */,
226
+			);
227
+			path = "Vendor Contacts";
228
+			sourceTree = "<group>";
229
+		};
159 230
 		1C6B6B922A2D4F5100A0B001 /* Payload Notes */ = {
160 231
 			isa = PBXGroup;
161 232
 			children = (
162 233
 				1C6B6B932A2D4F5100A0B001 /* Payload Notes README.md */,
163 234
 				1C6B6B962A2D4F5100A0B001 /* UM24C-UM25C-UM34C from floriandotorg-um24c.md */,
235
+				1C6B6BAF2A2D4F5100A0B001 /* TC66C Transport and Payload Working Note.md */,
164 236
 			);
165 237
 			path = "Payload Notes";
166 238
 			sourceTree = "<group>";