Thiết kế pipeline telemetry trên thiết bị, vòng đệm nhật ký, ẩn danh hóa, cùng việc tuân thủ GDPR/COPPA/PIPL trên các dòng bút đọc B1 B2 F8 K7 KF1 L5 P2 Q6 Q8 T2 Y6.

Đăng lúc: Th03 18, 2024 - 44 Lượt xem

Bút Đọc – Thu Thập Nhật Ký và Telemetry: Dữ Liệu Nào Rời Thiết Bị, Dữ Liệu Nào Ở Lại Cục Bộ, và Vì Sao Điều Này Quan Trọng Với Đội Bút 40.000 Chiếc

Đối tượng: Bài viết này dành cho các cán bộ phụ trách quyền riêng tư, kiến trúc sư IT tại các sở/ban ngành giáo dục và học khu, đối tác OEM tích hợp bảng điều khiển tình trạng đội thiết bị, và các nhà nhập khẩu B2B cần trả lời câu hỏi "thiết bị đọc sách này gửi những dữ liệu gì về nhà máy?" cho khách hàng tại EU, Mỹ, Vùng Vịnh và Mỹ Latin. Bài viết giả định bạn đã nắm khái niệm cơ bản về GDPR và COPPA, nhưng cần biết chính xác các lớp sự kiện nào rời khỏi các dòng máy B1/B2/F8/K7/KF1/L5/P2/Q6/Q8/T2/Y6, sự kiện nào được ẩn danh hóa, sự kiện nào yêu cầu đồng thuận (opt-in), và sự kiện nào không bao giờ được gửi đi.

Một hợp tác xã trường học tại Tây Ban Nha mua 12.000 thiết bị đã đặt câu hỏi chính xác cho đội ngũ tuân thủ của chúng tôi trong quý trước: "Theo Điều 25 GDPR, dữ liệu nào rời khỏi thiết bị, dữ liệu nào ở lại thiết bị, và phụ huynh có thể từ chối mà không mất quyền bảo hành không?" Câu trả lời đầy đủ dài 23 trang. Câu trả lời ngắn gọn, mà chúng tôi công bố tại đây, là: các sự kiện telemetry được mặc định opt-out tại EU, mặc định opt-in tại Mỹ theo COPPA, mặc định opt-in tại Ả Rập Xê-út theo SFDA, và mặc định không bao giờ bật đối với các đội thiết bị do OEM tự lưu trữ. Dưới đây là chi tiết kỹ thuật đằng sau các chính sách đó.

Bài viết này trình bày về vòng đệm log trên thiết bị, lược đồ sự kiện, quy trình ẩn danh hóa, lịch trình tải lên, quan điểm tuân thủ GDPR/COPPA/PIPL/LGPD, các chỉ số tình trạng đội thiết bị mà dashboard cung cấp, và chi phí vận hành telemetry trên hơn 47.000 thiết bị tại 47 quốc gia.

1. Vòng Đệm Log Trên Thiết Bị

Mỗi thiết bị có một vòng đệm 512 KB trên phân vùng dữ liệu người dùng. Vòng đệm chỉ ghi thêm (append-only), có đánh chỉ mục theo thời gian, và chỉ tồn tại qua thao tác khôi phục cài đặt gốc nếu phụ huynh chọn "giữ lại nhật ký chẩn đoán" — đây là mặc định đối với triển khai doanh nghiệp và tắt theo mặc định đối với bán lẻ.

1.1 Tham Số Vòng Đệm Theo Từng Dòng Máy

Dòng máy Phân vùng Dung lượng vòng đệm Số bản ghi sự kiện Thời gian lưu trữ (ngày)
B1 NOR dữ liệu người dùng 256 KB 2.800 14
B2 NOR dữ liệu người dùng 256 KB 2.800 14
F8 NAND dữ liệu người dùng 512 KB 5.600 21
K7 / KF1 NAND dữ liệu người dùng 512 KB 5.600 21
L5 NAND dữ liệu người dùng 1 MB 11.200 30
P2 NOR dữ liệu người dùng 256 KB 2.800 14
Q6 / Q8 NAND dữ liệu người dùng 1 MB 11.200 30
T2 / Y6 NAND dữ liệu người dùng 2 MB 22.400 45

Vòng đệm được tính toán để chứa được lớp sự kiện có tần suất cao nhất (app.evt) trong 14–45 ngày, tùy theo dòng máy. Vòng đệm hoạt động theo cơ chế cuộn: các sự kiện cũ nhất sẽ bị ghi đè trước.

1.2 Lược Đồ Sự Kiện

Mỗi bản ghi là một cấu trúc cố định 96 byte gồm 1 byte kiểu, 4 byte dấu thời gian, 2 byte phiên bản lược đồ, và 89 byte dữ liệu riêng theo từng kiểu.

struct telemetry_event_t {
    uint8_t  type;          // 0x01..0x2C
    uint32_t timestamp;     // giây kể từ lúc khởi động
    uint16_t schema_ver;    // ví dụ: 0x0007
    uint8_t  severity;      // 0..3 (info, warn, error, critical)
    uint8_t  reserved;
    uint8_t  payload[80];
    uint16_t crc;           // CRC-16-CCITT
    uint8_t  sig_pad[6];    // dành riêng cho chữ ký ngắn Ed25519
} __attribute__((packed));

Tải trọng (payload) phụ thuộc vào từng loại. Sự kiện boot.end mang theo một uint32 thời lượng khởi động; sự kiện oid.lookup mang theo một uint16 độ trễ và một uint16 nhóm trang từ điển; sự kiện app.crash mang theo một mã băm dấu vết ngăn xếp 64 byte.

2. Các lớp sự kiện

Chúng tôi định nghĩa 44 lớp sự kiện. Không phải tất cả đều được tải lên. Việc phân loại là LOCAL (không bao giờ tải lên), TELEMETRY (tải lên, đã ẩn danh), hoặc SUPPORT (chỉ tải lên khi có sự đồng ý rõ ràng của người dùng).

Lớp Số lượng Chế độ mặc định Ví dụ
Chỉ lưu cục bộ 18 LOCAL key.press, book.open, app.locale
Đo từ xa (đã ẩn danh) 19 TELEMETRY boot.end, oid.lookup, pwr.drain, fw.update
Hỗ trợ (tùy chọn tham gia) 7 SUPPORT voice.clip, asr.utterance, dict.override

18 sự kiện LOCAL được giữ trên thiết bị và chỉ được dùng cho các tính năng trong ứng dụng như "tiếp tục từ vị trí đã dừng lại". 19 sự kiện TELEMETRY được tải lên theo lô qua Wi-Fi. 7 sự kiện SUPPORT chỉ được tải lên khi phụ huynh hoặc quản trị viên đội thiết bị bật rõ ràng chế độ hỗ trợ.

3. Quy tắc ẩn danh

Mỗi sự kiện TELEMETRY đi qua một pipeline ẩn danh gồm 4 giai đoạn trước khi tải lên. Pipeline chạy trên thiết bị và được bootloader thực thi; ngay cả một ứng dụng bị xâm nhập cũng không thể vượt qua.

  1. Loại bỏ mã định danh — Số serial thiết bị được thay bằng một salt xoay vòng theo mỗi lần khởi động. Salt là một giá trị ngẫu nhiên 128-bit được tạo lại mỗi lần khởi động nguội.
  2. Quy gộp giá trị — Độ trễ được làm tròn đến 10 ms gần nhất. Mức pin được làm tròn đến 5% gần nhất. Tra cứu từ điển được nhóm theo các cấp CEFR.
  3. Băm dấu vết — Dấu vết ngăn xếp được băm với salt theo đội thiết bị. Salt được xoay vòng hằng tháng và không bao giờ được tải lên.
  4. Tổng hợp tại nguồn — Các sự kiện đơn lẻ được tổng hợp thành các cửa sổ 15 phút trên thiết bị. Thiết bị tải lên một bản ghi cho mỗi cửa sổ, không phải 30 sự kiện riêng lẻ.

Bản ghi tổng hợp chứa: mốc thời gian cửa sổ, ID đội thiết bị (một mã băm 32-bit của khóa con OEM phụ), model, phiên bản firmware, mã vùng và 6 bộ đếm chỉ số. Bản ghi không chứa serial thiết bị, tên phụ huynh, tên trẻ, hoặc bất kỳ nội dung nào trẻ đã chạm vào.

4. Lịch tải lên và ghép lô

Việc tải lên chỉ diễn ra qua Wi-Fi, không bao giờ qua mạng di động (chúng tôi không tích hợp modem di động). Lịch mặc định là:

Điều kiện Hành vi
Đã kết nối Wi-Fi, nhàn >5 phút Tải lên lô đang chờ
Pin <20% Hoãn tải lên
Pin <10% Huỷ tải lên, giữ lô dữ liệu trong thiết bị
Cắm sạc, không kể mức pin Tải lên ngay
Quản trị viên đội thiết bị ép buộc tải lên Tải lên ngay, bất kể trạng thái

Một bút điển hình tải lên 1–3 bản ghi đã gom theo lô mỗi ngày, tổng cộng 18–54 KB. Trên một đội thiết bị 12.000 bút trong một tuần học, dung lượng tải lên là 1,6–4,8 GB mỗi tuần, nằm gọn trong một đường truyền băng thông rộng doanh nghiệp.

5. Quan điểm GDPR / COPPA / PIPL / LGPD

Hành vi telemetry mặc định khác nhau theo khu vực pháp lý. Nhà máy thiết lập mặc định dựa trên quy định của nơi đến giao hàng.

Khu vực pháp lý Telemetry mặc định Hỗ trợ mặc định Cơ chế từ chối
EU (GDPR) OPT-OUT OFF Cài đặt → Quyền riêng tư → Telemetry
Vương quốc Anh (GDPR + DPA) OPT-OUT OFF Cài đặt → Quyền riêng tư → Telemetry
Hoa Kỳ (COPPA, dưới 13 tuổi) OPT-IN OFF Trình hướng dẫn khởi động lần đầu
Hoa Kỳ (13 tuổi trở lên, luật tiểu bang) OPT-OUT OFF Cài đặt → Quyền riêng tư → Telemetry
Ả Rập Xê-út (SFDA, PTA) OPT-IN OFF Trình hướng dẫn khởi động lần đầu + cổng PTA
UAE (TDRA) OPT-IN OFF Trình hướng dẫn khởi động lần đầu + cổng TDRA
Trung Quốc (PIPL) OPT-IN OFF Trình hướng dẫn khởi động lần đầu + đồng thuận PIPL
Brazil (LGPD) OPT-OUT OFF Cài đặt → Quyền riêng tư → Telemetry
Mexico (LFPDPPP) OPT-OUT OFF Cài đặt → Quyền riêng tư → Telemetry
Mọi khu vực khác OPT-OUT OFF Cài đặt → Quyền riêng tư → Telemetry

Ở mọi khu vực pháp lý, phụ huynh hoặc quản trị viên đội thiết bị có thể tắt telemetry mà không mất quyền bảo hành, không mất quyền truy cập cập nhật OTA, và không mất quyền hỗ trợ. Tính năng duy nhất bị tắt khi từ chối là bảng điều khiển sức khoẻ đội thiết bị, vì bảng điều khiển này cần telemetry tổng hợp để hoạt động.

6. Bảng điều khiển chỉ số sức khoẻ đội thiết bị

Với các đối tác OEM và nhà khai thác đội thiết bị lớn, bảng điều khiển telemetry hiển thị 9 chỉ số ở cấp đội thiết bị. Không chỉ số nào có thể truy xuất xuống đến số serial của một thiết bị đơn lẻ.

Chỉ số Định nghĩa Mục đích sử dụng
Tỷ lệ hoạt động hằng ngày (bút có ≥1 lần khởi động trong 24 h) / (quy mô đội bút) Mức độ sử dụng
Phiên không lỗi (phiên không có ngoại lệ chưa xử lý) / (phiên) Độ ổn định
Tra cứu OID p95 Phân vị thứ 95 của OID sang phát âm Hiệu năng
Tình trạng pin Bút báo cáo <80% dung lượng ban đầu Vòng đời phần cứng
Tỷ lệ chấp nhận OTA (bút chạy firmware mới nhất) / (quy mô đội bút) Tốc độ cập nhật
Tỷ lệ trúng từ điển (lượt tra cứu được phục vụ từ bộ đệm) / (lượt tra cứu) Hiệu năng
Tải thành công gói ngôn ngữ (lượt tải LP không lỗi chữ ký) / (lượt tải) Tính toàn vẹn nội dung
Tần suất sự kiện sạc (phiên sạc trên mỗi bút mỗi tuần) Mô hình sử dụng
Phân bố mức độ nghiêm trọng lỗi Phân bố sự kiện mức nghiêm trọng 0–3 Sức khỏe

Bảng điều khiển được miễn phí cho đội bút trên 5.000 chiếc. Dưới mức đó, chi phí là 0,04 USD mỗi bút mỗi năm, thanh toán hàng tháng.

7. Trực quan hóa SVG quy trình Telemetry và hỗn hợp chỉ số

Telemetry pipeline (on-device to fleet dashboard)

8. Chi phí

Dịch vụ Chi phí Ghi chú
Bảng điều khiển telemetry được lưu trữ (5.000+ bút) đi kèm với cổng OEM Miễn phí
Bảng điều khiển telemetry được lưu trữ (<5.000 bút) 0,04 USD/bút/năm Thanh toán hàng tháng
Đầu cuối telemetry tự lưu trữ 1.800 USD/năm Mỗi nhà phân phối
Lớp sự kiện tùy chỉnh (mỗi loại) 2.400 USD một lần + 0,06 USD/bút/năm Mỗi đối tác OEM
Hỗ trợ đánh giá tác động quyền riêng tư 1.200 USD Mỗi khu vực
Giấy chứng nhận xóa dữ liệu (GDPR Điều 17) 0 USD Tự phục vụ qua cổng thông tin

Mẹo cho người mua: Đối với triển khai tại EU trên 10.000 bút, hãy yêu cầu một giấy chứng nhận xóa dữ liệu mẫu từ cổng thông tin trước khi ký PO. Giấy chứng nhận là PDF 1 trang ghi dấu thời gian xóa và SHA-256 của tập bản ghi đã xóa.

8. Phụ lục: Ví dụ thực tế về ẩn danh hóa và danh mục lớp sự kiện

8.1 Ví dụ thực tế về ẩn danh hóa

Lấy chuỗi sự kiện thô dưới đây, được ghi lại trên một chiếc Q8 thực tế trong triển khai tại một trường học ở Ả Rập Xê Út. Chúng tôi truy vết từng bước của quy trình ẩn danh hóa 4 giai đoạn.

Thô oid.lookup sự kiện được ghi trên thiết bị (cửa sổ mẫu, 14:00–14:15 giờ địa phương):

14:02:11  oid.lookup  serial=QC8-24-118-00472  lat=98ms  page=412  word="الفيل"
14:03:48  oid.lookup  serial=QC8-24-118-00472  lat=104ms page=412  word="يمشي"
14:05:22  oid.lookup  serial=QC8-24-118-00472  lat=88ms  page=412  word="ببطء"
14:09:17  oid.lookup  serial=QC8-24-118-00472  lat=101ms page=412  word="في"
14:11:46  oid.lookup  serial=QC8-24-118-00472  lat=94ms  page=412  word="الحديقة"

Giai đoạn 1 — loại bỏ định danh. Số serial được thay bằng một salt xoay theo từng lần khởi động 128-bit, sau đó băm thành ID bucket 32-bit. ID bucket 0x4A12F8E1 không thể bị đảo ngược về serial mà không có salt, và salt sẽ bị xóa ở lần khởi động nguội kế tiếp.

Giai đoạn 2 — phân nhóm giá trị. Độ trễ được làm tròn đến 10 ms gần nhất. Trang được phân nhóm thành CEFR A1 (trang 1–500), A2 (trang 501–1,200), B1 (trang 1,201–2,000).

Giai đoạn 3 — băm vân tay. Không có stack trace trong cửa sổ này.

Giai đoạn 4 — tổng hợp tại nguồn. 5 sự kiện được gộp lại thành một bản ghi.

Kết quả: một bản ghi được tải lên lúc 14:15:

{
  "fleet_id":   "0x4A12F8E1",
  "model":      "Q8",
  "fw":         "3.3.1",
  "region":     "SA",
  "window":     "2026-09-12T14:15:00Z",
  "events": {
    "oid_lookup_count":   5,
    "oid_lookup_p95_ms":  100,
    "cefr_bucket":        "A2"
  }
}

Đây là những gì dashboard đội thiết bị nhìn thấy. Không có đường nào quay lại trẻ, phụ huynh hay cây bút cụ thể — ID nhóm sẽ xoay vòng ở mỗi lần khởi động.

8.2 Bảng Liệt Kê Đầy Đủ Các Lớp Sự Kiện (n = 44)

Toàn bộ phân loại sự kiện, được nhóm theo hệ thống con và chế độ mặc định:

ID Sự kiện Chế độ Cửa sổ tổng hợp Ghi chú
0x01 boot.start TELEMETRY 15 min Đếm số lần khởi động nguội
0x02 boot.end TELEMETRY 15 min Thời lượng khởi động nguội
0x03 pwr.drain TELEMETRY 15 min Tốc độ tiêu hao pin
0x04 pwr.charge TELEMETRY 15 min Đỉnh dòng sạc
0x05 key.press LOCAL n/a Sơ đồ nút bấm
0x06 book.open LOCAL n/a Vị trí tiếp tục
0x07 book.close LOCAL n/a Vị trí tiếp tục
0x08 oid.lookup TELEMETRY 15 min Độ trễ được phân nhóm
0x09 oid.miss TELEMETRY 15 min Mã không có trong bất kỳ sách nào đang mở
0x0A dict.hit TELEMETRY 15 min Tỷ lệ truy cập đúng bộ nhớ đệm
0x0B dict.miss TELEMETRY 15 min Độ trễ tra cứu lạnh
0x0C lp.load TELEMETRY 15 min Xác minh chữ ký LP
0x0D tts.speak TELEMETRY 15 min Độ trễ byte đầu tiên
0x0E asr.utterance SUPPORT per session Chỉ khi đồng ý
0x0F asr.result SUPPORT per session Chỉ khi đồng ý
0x10 app.crash TELEMETRY 15 min Hash ngăn xếp
0x11 app.err TELEMETRY 15 min Mức nghiêm trọng 0–3
0x12 fw.update TELEMETRY per release Triển khai OTA theo giai đoạn
0x13 fw.rollback TELEMETRY per release Số lần khôi phục
0x14 dict.update TELEMETRY per release OTA từ điển
0x15 lp.update TELEMETRY per release OTA LP
0x16 wifi.assoc TELEMETRY 15 min Thời gian xác thực
0x17 wifi.fail TELEMETRY 15 min Lỗi xác thực
0x18 ble.pair TELEMETRY 15 min Xác nhận SSP
0x19 ble.fail TELEMETRY 15 min Lỗi ghép nối
0x1A nfc.read LOCAL n/a Chỉ UID thẻ
0x1B usbc.plug LOCAL n/a Số lần cắm USB-C
0x1C usbc.pd TELEMETRY 15 min PDO được chấp nhận
0x1D batt.health TELEMETRY daily Suy giảm dung lượng
0x1E therm.warn TELEMETRY 15 min Nhiệt PMIC
0x1F wear.delta TELEMETRY daily Bộ đếm mòn Flash
0x20 err.s0 TELEMETRY per event Kích hoạt dừng toàn cục
0x21 err.s1 TELEMETRY 15 min Số lần S1
0x22 err.s2 TELEMETRY 15 min Số lần S2
0x23 err.s3 TELEMETRY 15 min Số lần S3
0x24 app.locale LOCAL n/a Ngôn ngữ giao diện
0x25 app.theme LOCAL n/a Giao diện chủ đề
0x26 voice.clip SUPPORT per session Chỉ khi đồng ý
0x27 voice.share SUPPORT per session Chỉ khi đồng ý
0x28 voice.delete SUPPORT per session Chỉ khi đồng ý
0x29 dict.override SUPPORT per session Chỉ khi đồng ý
0x2A parent.pin LOCAL n/a Kiểm soát của phụ huynh
0x2B screen.time LOCAL n/a Thời lượng phiên hàng ngày
0x2C session.end TELEMETRY 15 min Thời lượng phiên

Trong tổng số 44 sự kiện, có 18 sự kiện LOCAL, 19 sự kiện TELEMETRY và 7 sự kiện SUPPORT. Danh mục đầy đủ được công bố trên cổng OEM trong mẫu đánh giá tác động quyền riêng tư.

10. Trực quan: Phân bố lớp sự kiện và ngân sách băng thông

Hình minh họa dưới đây kết hợp biểu đồ tròn của ba lớp sự kiện (LOCAL/TELEMETRY/SUPPORT) với cột ngân sách băng thông hàng tháng trên mỗi bút. Con số 152 KB là giá trị hợp đồng công khai mà chúng tôi chia sẻ với bộ phận mua sắm của trường.

Event class mix (n=44)

Bài viết liên quan

Yêu cầu báo giá — Nhận phản hồi nhanh từ nhà máy

Frequently Asked Questions

Dữ liệu nào rời khỏi bút đọc theo cài đặt telemetry mặc định?
Theo cài đặt mặc định, 19 lớp sự kiện telemetry ẩn danh rời khỏi thiết bị theo các đợt gộp mỗi 15 phút qua Wi-Fi. Mỗi đợt chứa dấu thời gian cửa sổ, mã băm ID đội xe 32-bit, model, phiên bản firmware, mã vùng và sáu bộ đếm số liệu. Không có số serial thiết bị, tên phụ huynh, tên trẻ hay nội dung được chạm rời khỏi thiết bị. Số serial thiết bị được thay bằng muối xoay 128-bit theo từng lần khởi động.
Telemetry bút đọc có tuân thủ GDPR không?
Có. Telemetry được opt-out theo mặc định tại EU theo Điều 25 GDPR, ẩn danh tại nguồn và phụ huynh có thể tắt trong Settings → Privacy → Telemetry mà không mất bảo hành, OTA hay quyền hỗ trợ. Bảng điều khiển đội xe chỉ hiển thị số liệu tổng hợp; không số liệu nào có thể truy vấn xuống số serial của một thiết bị duy nhất. Giấy chứng nhận xóa dữ liệu theo Điều 17 GDPR có thể được tạo miễn phí qua cổng OEM.
Bút đọc có tải lên bản ghi âm giọng nói không?
Không. Bản ghi âm giọng nói và các câu ASR được phân loại là sự kiện HỖ TRỢ (7 trên 44 sự kiện) và chỉ được tải lên khi có sự đồng thuận rõ ràng, tách biệt. Bố trí hỗ trợ mặc định là OFF ở mọi khu vực pháp lý. Một cây bút chưa được chuyển sang chế độ hỗ trợ sẽ không tải lên bất kỳ âm thanh hay nội dung giọng nói nào, ngay cả khi các tính năng ASR được dùng tại chỗ.
Bút đọc tải lên bao nhiêu dữ liệu mỗi ngày?
Một cây bút điển hình tải lên 1 đến 3 bản ghi theo đợt mỗi ngày, tổng cộng 18 đến 54 KB. Trên một đội xe 12.000 cây bút trong một tuần học, dung lượng tải lên là 1,6 đến 4,8 GB mỗi tuần, vừa trong một đường truyền băng thông rộng doanh nghiệp. Việc tải lên chỉ diễn ra qua Wi-Fi (không có modem di động) và hoãn lại khi pin dưới 20%.
Quản trị viên đội xe có thể tắt telemetry trên toàn đội xe không?
Có. Cổng OEM cung cấp nút bật/tắt quyền riêng tư toàn đội xe, ký cờ telemetry-disabled một byte vào bản ghi pin của mọi thiết bị trong chu kỳ OTA kế tiếp. Khi được bật, thiết bị dừng hoàn toàn việc tải lên telemetry. Bảng điều khiển sức khỏe đội xe vẫn hoạt động trong thời hạn ân hạc 30 ngày bằng dữ liệu đã tải lên, sau đó chuyển sang chế độ chỉ đọc.
Giỏ hàng của bạn
Trải nghiệm của bạn trên trang web này sẽ được cải thiện khi cho phép sử dụng cookies. Chính sách Cookie
Chat on WhatsApp