การวิศวกรรมย้อนกลับของไอแบบใช้แล้วทิ้งแบบชาร์จไฟได้บางรุ่นที่มีจอ TFT LCD สีขนาดเล็ก (Raz TN9000/Kraze HD7K/อื่นๆ)
สามารถดูการอัปเดตเพิ่มเติมได้ที่ https://github.com/ginbot86/ColorLCDVape-RE
เครื่องสูบไอแบบใช้แล้วทิ้งในตลาดมีอุปกรณ์เสริม เช่น หน้าจอ LCD สีและความสามารถในการชาร์จ USB-C แต่เป็นอุปกรณ์แบบใช้ครั้งเดียวทิ้ง ทำให้อุปกรณ์ดังกล่าวค่อนข้างเป็นอันตรายต่อระบบนิเวศ ในทางกลับกัน นี่เป็นการเปิดโอกาสในการกอบกู้ฮาร์ดแวร์โดยมือสมัครเล่น/วิศวกร การนำ vape กลับมาใช้ใหม่ตามที่เป็นอยู่โดยการเติมด้วยน้ำ vape สด และรีเซ็ตมิเตอร์ภายใน หรือแม้แต่การปรับแต่งโดยการแก้ไขภาพออนบอร์ด
vape เฉพาะที่กำลังวิจัยในโครงการนี้มีหลายชื่อ แต่ชื่อที่ได้รับการวิจัยโดยเฉพาะเรียกว่า Kraze HD7K อย่างไรก็ตาม vape นี้ยังมีให้เห็นภายใต้ชื่อแบรนด์ "RAZ" เช่น RAZ TN9000
โดยทั่วไปแล้วบุหรี่ไฟฟ้าแบบใช้แล้วทิ้งจะใช้แบตเตอรี่ลิเธียมไอออนโดยไม่มีวงจรป้องกันใดๆ การลัดวงจรอาจทำให้พลังงานที่ไม่สามารถควบคุมได้กระจายออกไป ทำให้เกิดการบาดเจ็บและ/หรือทรัพย์สินเสียหาย งานใดๆ ที่ทำกับไอระเหยเหล่านี้ถือเป็นความเสี่ยงของคุณเอง
มีการพิจารณาว่ามีการแก้ไขวงจรของไอเหล่านี้หลายครั้ง ซึ่งอาจมีความเข้ากันไม่ได้ซึ่งอาจส่งผลให้อุปกรณ์เสียหายได้หากเวอร์ชันไม่ตรงกัน ตรวจสอบการเชื่อมต่อและความเข้ากันได้ของเฟิร์มแวร์ก่อนดำเนินการแก้ไขใดๆ
นอกจากนี้ น้ำ vape/"e-liquid" อาจมีนิโคตินที่มีความเข้มข้นสูง ซึ่งถูกดูดซึมผ่านผิวหนังได้ การจัดการภายในของ vape ควรทำโดยใช้ถุงมือจนกว่าชิ้นส่วนภายในจะสะอาดปราศจากน้ำผลไม้และ/หรือสารตกค้าง
งานของผู้อื่นเกี่ยวกับไอระเหยเหล่านี้รวมถึงแต่ไม่จำกัดเพียง:
งานที่ทำในพื้นที่เก็บข้อมูลดังกล่าวอาจขึ้นอยู่กับงานที่ทำในโครงการนี้หรือไม่ก็ได้ มีจุดมุ่งหมายเพื่อเชื่อมโยงโครงการที่คล้ายกันด้วยความหวังว่าชุมชนจะสามารถดำเนินการกับไอระเหยเหล่านี้ได้มากขึ้น
Vape ใช้ฮาร์ดแวร์ต่อไปนี้:
Vape ใช้จอ IPS LCD ความละเอียด 80x160 ขนาด 0.96 นิ้ว พร้อมด้วยสายเคเบิล flat-flex (FPC) ขนาด 13 พิน 0.7 มม. ที่ถูกบัดกรีเข้ากับเมนบอร์ด vape โดยเชื่อมต่อผ่าน SPI 4 สาย (ข้อมูล นาฬิกา ข้อมูล/คำสั่ง การเลือกชิป) และดูเหมือนว่าจะใช้คอนโทรลเลอร์ ST7735S มันยังใช้ pinout เดียวกันสำหรับจอแสดงผลที่มีวางจำหน่ายทั่วไป เช่น Smart Prototyping #102106
เข็มหมุด | ชื่อ | การทำงาน |
---|---|---|
1 | TP0/ NC | ไม่ได้ใช้ |
2 | ทีพี1/นอร์ทแคโรไลนา | ไม่ได้ใช้ |
3 | สดิน | ข้อมูล SPI ไปยัง LCD |
4 | เอสซีแอลเค | นาฬิกาเอสพีไอ |
5 | อาร์เอส | ลอจิกต่ำ = คำสั่ง สูง = ข้อมูล |
6 | /พสท | รีเซ็ต (แอคทีฟ-ต่ำ) |
7 | /ซีเอส | เลือกชิป (แอคทีฟ-ต่ำ) |
8 | จีเอ็นดี | แหล่งจ่ายไฟ/กราวด์สัญญาณ |
9 | เอ็นซี | ไม่ได้เชื่อมต่อ |
10 | วีดีดี | แหล่งจ่ายไฟ (3.3V) |
11 | แอลอีดีเค | แคโทดแสงไฟ LED |
12 | แอลอีดีเอ | แอโนดแบ็คไลท์ LED |
13 | จีเอ็นดี | แหล่งจ่ายไฟ/กราวด์สัญญาณ |
หน่วยความจำแฟลชบน vape มีสองรูปแบบ: แฟลชภายในบนไมโครคอนโทรลเลอร์ และ 1 เมกะไบต์ (8 เมกะบิต) ของแฟลช SPI NOR ภายนอก แบบแรกประกอบด้วยเฟิร์มแวร์ ในขณะที่แบบหลังประกอบด้วยรูปภาพทั้งหมดที่แสดงบนจอ LCD รวมถึงเวลาทั้งหมดที่มีการใช้งานคอยล์ทำความร้อน vape ตัวนับนี้ใช้เพื่อรับจำนวน "แท่ง" ที่แสดงบนมิเตอร์น้ำ vape การวิเคราะห์บัสข้อมูล LCD (ดูการจับลอจิก .dsl โดยใช้ DreamSourceLab DSView) แสดงให้เห็นว่าไมโครคอนโทรลเลอร์ใช้ DMA (Direct Memory Access) เพื่อสตรีมข้อมูลภาพจากแฟลชภายนอกไปยัง LCD เนื่องจากการถ่ายโอนข้อมูลเกิดขึ้นเป็นชิ้นขนาด 4096 ไบต์ที่ต่อเนื่องกัน ซึ่งสอดคล้องกับหน้า NOR Flash หน้าเดียว การวิเคราะห์หน่วยความจำของไมโครคอนโทรลเลอร์ระบุว่าบัฟเฟอร์หน่วยความจำ DMA อยู่ในที่อยู่ RAM 0x2000022C-0x2000062B
ภาพทั้งหมดจะถูกจัดเก็บไว้ในแฟลชภายนอกในรูปแบบบิตแมป RGB565 16 บิตแบบดิบ (กล่าวคือ แต่ละพิกเซลใช้ข้อมูล 2 ไบต์) เครื่องมือการแปลง เช่น ImageConverter565 จากไลบรารี UTFT ของ Rinky-Dink Electronics สามารถใช้เพื่อแปลงรูปแบบรูปภาพ เช่น JPEG/PNG ให้เป็นไฟล์ไบนารีดิบที่สามารถติดตั้งลงใน Flash ภายนอกได้ที่ออฟเซ็ตที่เกี่ยวข้อง ไม่มีข้อมูลเมตาที่จัดเก็บไว้กับรูปภาพ Raw ดังนั้นจึงต้องระบุขนาดรูปภาพด้วยตนเอง ดังที่แสดงในตารางด้านล่าง
ดัชนี (#) | ออฟเซ็ต (ฐานสิบหก) | ความยาว (ฐานสิบหก) | เฟรม H (พิกเซล) | เฟรม V (px) | หมวดหมู่ | ไม่ได้ใช้? | ลำดับ (#) | หมายเหตุ |
---|---|---|---|---|---|---|---|---|
0 | 0 | 6400 | 80 | 160 | พื้นหลัง | 0 | ||
1 | 6400 | 2880 | 72 | 72 | ไอคอนแบตเตอรี่ | 0 | ||
2 | 8C80 | 2880 | 72 | 72 | ไอคอนแบตเตอรี่ | 1 | ||
3 | 500 บาท | 2880 | 72 | 72 | ไอคอนแบตเตอรี่ | 2 | ||
4 | DD80 | 2880 | 72 | 72 | ไอคอนแบตเตอรี่ | 3 | ||
5 | 10600 | 2880 | 72 | 72 | ไอคอนแบตเตอรี่ | 4 | ||
6 | 12E80 | 2880 | 72 | 72 | ไอคอนแบตเตอรี่ | 5 | ||
7 | 15700 | 2880 | 72 | 72 | ไอคอนแบตเตอรี่ | 6 | ||
8 | 17F80 | 2880 | 72 | 72 | ไอคอนแบตเตอรี่ | 7 | ||
9 | 1A800 | 2880 | 72 | 72 | ไอคอนแบตเตอรี่ | 8 | ||
10 | 1D080 | 2880 | 72 | 72 | ไอคอนแบตเตอรี่ | 9 | ||
11 | 1F900 | 2880 | 72 | 72 | ไอคอนแบตเตอรี่ | 10 | ||
12 | 22180 | 2880 | 72 | 72 | ไอคอนน้ำผลไม้ | 0 | ||
13 | 24A00 | 2880 | 72 | 72 | ไอคอนน้ำผลไม้ | 1 | ||
14 | 27280 | 2880 | 72 | 72 | ไอคอนน้ำผลไม้ | 2 | ||
15 | 29B00 | 2880 | 72 | 72 | ไอคอนน้ำผลไม้ | 3 | ||
16 | 2C380 | 2880 | 72 | 72 | ไอคอนน้ำผลไม้ | 4 | ||
17 | 2EC00 | 2880 | 72 | 72 | ไอคอนน้ำผลไม้ | 5 | ||
18 | 31480 | 2880 | 72 | 72 | ไอคอนน้ำผลไม้ | 6 | ||
19 | 33D00 | 6400 | 80 | 160 | สูบไอนิเมชั่น | 0 | ||
20 | 3A100 | 6400 | 80 | 160 | สูบไอนิเมชั่น | 1 | ||
21 | 40500 | 6400 | 80 | 160 | สูบไอนิเมชั่น | 2 | ||
22 | 46900 | 6400 | 80 | 160 | สูบไอนิเมชั่น | 3 | ||
23 | 4CD00 | 6400 | 80 | 160 | สูบไอนิเมชั่น | 4 | ||
24 | 53100 | 6400 | 80 | 160 | สูบไอนิเมชั่น | 5 | ||
25 | 59500 | 6400 | 80 | 160 | สูบไอนิเมชั่น | 6 | ||
26 | 5F900 | 6400 | 80 | 160 | สูบไอนิเมชั่น | 7 | ||
27 | 65D00 | 6400 | 80 | 160 | สูบไอนิเมชั่น | 8 | ||
28 | 6C100 | 6400 | 80 | 160 | สูบไอนิเมชั่น | 9 | ||
29 | 72500 | 6400 | 80 | 160 | สูบไอนิเมชั่น | 10 | ||
30 | 78900 | 6400 | 80 | 160 | สูบไอนิเมชั่น | 11 | ||
31 | 7ED00 | 6400 | 80 | 160 | สูบไอนิเมชั่น | 12 | ||
32 | 85100 | 6400 | 80 | 160 | สูบไอนิเมชั่น | 13 | ||
33 | 8B500 | 6400 | 80 | 160 | สูบไอนิเมชั่น | 14 | ||
34 | 91900 | 6400 | 80 | 160 | สูบไอนิเมชั่น | 15 | ||
35 | 97D00 | 6400 | 80 | 160 | พื้นหลังปลั๊กอิน 1 | ไม่ได้ใช้ | 16 | 1 |
36 | 9E100 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 0 | 1 |
37 | 9F8CA | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 1 | 1 |
38 | A1094 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 2 | 1 |
39 | A285E | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 3 | 1 |
40 | A4028 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 4 | 1 |
41 | A57F2 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 5 | 1 |
42 | A6FBC | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 6 | 1 |
43 | A8786 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 7 | 1 |
44 | A9F50 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 8 | 1 |
45 | เอบี71เอ | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 9 | 1 |
46 | ACEE4 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 10 | 1 |
47 | AE6AE | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 11 | 1 |
48 | เอเอฟอี78 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 12 | 1 |
49 | B1642 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 13 | 1 |
50 | B2E0C | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 14 | 1 |
51 | B45D6 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 15 | 1 |
52 | B5DA0 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 16 | 1 |
53 | B756A | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 17 | 1 |
54 | B8D34 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 18 | 1 |
55 | BA4FE | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 19 | 1 |
56 | BBCC8 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 20 | 1 |
57 | บีดี492 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 21 | 1 |
58 | บีอีซี5ซี | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 22 | 1 |
59 | C0426 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 23 | 1 |
60 | C1BF0 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 24 | 1 |
61 | C33BA | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 25 | 1 |
62 | C4B84 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 26 | 1 |
63 | C634E | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 27 | 1 |
64 | C7B18 | 17CA | 35 | 87 | เช็ดโลโก้ | ไม่ได้ใช้ | 28 | 1 |
65 | C92E2 | 6400 | 80 | 160 | พื้นหลังปลั๊กอิน 2 | ไม่ได้ใช้ | 0 | 1 |
66 | CF6E2 | F80 | 31 | 64 | แอนิเมชั่นบาร์แบตเตอรี่ | ไม่ได้ใช้ | 0 | 1 |
67 | D0662 | F80 | 31 | 64 | แอนิเมชั่นบาร์แบตเตอรี่ | ไม่ได้ใช้ | 1 | 1 |
68 | D15E2 | F80 | 31 | 64 | แอนิเมชั่นบาร์แบตเตอรี่ | ไม่ได้ใช้ | 2 | 1 |
69 | D2562 | F80 | 31 | 64 | แอนิเมชั่นบาร์แบตเตอรี่ | ไม่ได้ใช้ | 3 | 1 |
70 | D34E2 | F80 | 31 | 64 | แอนิเมชั่นบาร์แบตเตอรี่ | ไม่ได้ใช้ | 4 | 1 |
71 | D4462 | F80 | 31 | 64 | แอนิเมชั่นบาร์แบตเตอรี่ | ไม่ได้ใช้ | 5 | 1 |
72 | D53E2 | 6400 | 80 | 160 | พื้นหลังปลั๊กอิน 3 | 0 | ||
73 | DB7E2 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 0 | ||
74 | DC67C | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 1 | ||
75 | DD516 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 2 | ||
76 | DE3B0 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 3 | ||
77 | DF24A | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 4 | ||
78 | E00E4 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 5 | ||
79 | E0F7E | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 6 | ||
80 | E1E18 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 7 | ||
81 | E2CB2 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 8 | ||
82 | E3B4C | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 9 | ||
83 | E49E6 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 10 | ||
84 | E5880 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 11 | ||
85 | E671A | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 12 | ||
86 | E75B4 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 13 | ||
87 | E844E | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 14 | ||
88 | E92E8 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 15 | ||
89 | EA182 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 16 | ||
90 | EB01C | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 17 | ||
91 | EBEB6 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 18 | ||
92 | อีซีดี50 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 19 | ||
93 | เอดบีอีเอ | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 20 | ||
94 | เขตเศรษฐกิจยุโรป84 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 21 | ||
95 | EF91E | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 22 | ||
96 | F07B8 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 23 | ||
97 | F1652 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 24 | ||
98 | F24EC | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 25 | ||
99 | F3386 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 26 | ||
100 | F4220 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 27 | ||
101 | F50BA | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 28 | ||
102 | F5F54 | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 29 | ||
103 | F6DEE | E9A | 21 | 89 | โลโก้เครื่องชาร์จเช็ด | 30 | ||
104 | F8000 | 4 | ไม่มี | ไม่มี | เวลา Vape ทั้งหมด x0.01 วินาที (LSB->MSB) | ไม่มี | 2 | |
105 | F8004 | 1 | ไม่มี | ไม่มี | Vape ใช้งานธง (0xBB) | ไม่มี | 3 |
มีการรวมสคริปต์ Python สองตัวเพื่อช่วยในการแยกและประกอบ Flash dump เข้ากับ/จากแต่ละอิมเมจที่จัดเก็บไว้ใน SPI Flash: split-flashdump.py
และ assemble-flashdump.py
ขณะนี้เครื่องมือไม่ได้ทำการแปลงรูปแบบ (การได้รับ ChatGPT มาช่วยฉันจนถึงตอนนี้ถือเป็นกระบวนการที่ยาวนานอยู่แล้ว) แต่ช่วยได้มากในการช่วยสร้างชุด "ธีม" ที่กำหนดเอง ทรัพยากรที่ไม่ได้ใช้สามารถลบออกจากแฟลชดัมพ์ที่แพ็กใหม่ได้โดยเก็บทรัพยากรเหล่านั้นออกจากไดเร็กทอรีที่มีไฟล์ที่จะประกอบใหม่ ขอบเขตที่ไม่ได้ใช้เหล่านั้นจะยังคงเป็น 0xFF/ไบต์ที่ถูกลบ
repacker assemble-flashdump.py
คาดว่าชื่อไฟล์อินพุตจะมีรูปแบบเฉพาะ เนื่องจากใช้ออฟเซ็ตที่เข้ารหัสเลขฐานสิบหกเพื่อกำหนดตำแหน่งที่จะแทรกแต่ละส่วนลงในไฟล์ Flash dump ขนาด 1MB (ดู split_map.csv หรือตัวอย่างที่รวมไว้ ธีม ตามที่อธิบายไว้ด้านล่างใน Custom Theme Packs ):
{index}_{offset}_{width}x{height}_{category}_{sequence}.bin
19_33d00_80x160_vapeanim-0.bin
หากต้องการแปลงรูปภาพ PNG หรือ JPEG ให้ใช้เครื่องมือ ImgConv.exe
ของไลบรารี UTFT ที่กล่าวถึงก่อนหน้านี้:
ImgConv.exe *.png /r
ImgConv.exe *.jpg /r
ren *.raw *.bin
หมายเหตุ: ตรวจสอบให้แน่ใจว่ารูปภาพที่จะแปลงเป็นรูปแบบ .bin นั้นเป็นขนาดที่ถูกต้องก่อนที่จะทำการแปลง!
เพื่อเป็นการพิสูจน์แนวคิด จึงมีการรวมธีมแพ็คสไตล์ Windows 95 ที่เสร็จสมบูรณ์ไว้ด้วย โดยจะใช้ทรัพยากรทั้งหมดสำหรับตัวบ่งชี้แบตเตอรี่และน้ำผลไม้ แอนิเมชั่นการชาร์จ (เฉพาะพื้นหลังปลั๊กอิน 3 และการล้างโลโก้เครื่องชาร์จ เนื่องจากเป็นแอนิเมชั่นที่ใช้เพียงชุดเดียวที่มีเฟิร์มแวร์ที่ทดสอบ) และแอนิเมชั่นการสูบไอ (การจับภาพ 3 มิติที่ถูกต้องตามอัตราส่วนภาพ สกรีนเซฟเวอร์ไปป์) สิ่งที่คุณต้องมีคือการเข้าถึง SPI Flash และวิธีการตั้งโปรแกรมใหม่ พื้นที่สำหรับขยายแนวคิดนี้อาจทำได้ผ่านดองเกิล SWD USB ราคาถูก เชื่อมต่อผ่านพอร์ต USB-C และซอฟต์แวร์บางตัวที่อัปโหลดเครื่องมือการเขียนโปรแกรมใหม่ขนาดเล็กลงใน RAM ของไมโครคอนโทรลเลอร์ ซึ่งอาจช่วยลดความจำเป็นในการถอดชิป Flash ออก
มีเทมเพลตเปล่า/แก้ไขได้รวมอยู่ด้วย เฟรมทั้งหมดถูกนำมาใช้กับหมายเลขเฟรมสำหรับภาพเคลื่อนไหว
การปรับแต่งทั้งหมดนี้สามารถทำได้โดยไม่ต้องแตะเฟิร์มแวร์ของไมโครคอนโทรลเลอร์!
ตามที่อธิบายไว้ใน รูปแบบหน่วยความจำแฟลชภายนอก หมายเหตุ 2 และ 3 ข้างต้น การเติมตำแหน่งแฟลชภายนอก 0xF8000-0xF8004 ด้วย 0xFF จะรีเซ็ตเครื่องวัดน้ำผลไม้ให้เต็ม อนุญาตให้นำ vape กลับมาใช้ใหม่ได้เมื่อเติมถังเก็บแล้ว ไมโครคอนโทรลเลอร์จะต้องรีเซ็ตโดยการดึงพิน nRST ลงกราวด์ หรือโดยการหมุนเวียนพลังงานโดยการถอดและเชื่อมต่อแบตเตอรี่ใหม่ สิ่งนี้น่าจะเกิดขึ้นแล้วหากมีการถอดและขายแฟลชภายนอกอีกครั้งสำหรับการตั้งโปรแกรมใหม่ / การแพตช์
ไมโครคอนโทรลเลอร์ใช้อินเทอร์เฟซการดีบัก/การเขียนโปรแกรม Serial Wire Debug (SWD) มาตรฐานอุตสาหกรรมสำหรับการอ่าน/เขียนเฟิร์มแวร์และ/หรือหน่วยความจำ SRAM ภายใน อินเทอร์เฟซ SWD ถูกเปิดเผยผ่านพอร์ตชาร์จ USB-C ของ vape เส้น SWDIO/SWCLK เชื่อมต่อกับพิน CC ที่อยู่ด้านหลังตัวต้านทานแบบพูลดาวน์ 5.1k Rd ปกติ เนื่องจากโดยปกติแล้วตัวเชื่อมต่อจะใช้เฉพาะกำลังไฟเท่านั้น
เฟิร์มแวร์บนไมโครคอนโทรลเลอร์ไม่ได้รับการป้องกันการอ่านข้อมูล ดังนั้นการวิจัยเพิ่มเติมเกี่ยวกับเฟิร์มแวร์ผ่านการคอมไพล์จึงเป็นไปได้ อาจเป็นไปได้ที่จะใช้อินเทอร์เฟซการแก้ไขข้อบกพร่องนี้เพื่อโต้ตอบกับแฟลชภายนอก แต่ยังไม่ได้รับการวิจัย
เมนบอร์ด vape บางตัวที่ได้รับการทดสอบมีแผ่นทดสอบ RX/TX อยู่ที่ด้านหลังของบอร์ด สิ่งนี้ยังไม่ได้รับการวิจัยว่าพอร์ตนี้โต้ตอบกับเฟิร์มแวร์อย่างไร และ/หรือสามารถใช้เพื่ออัปเดตเนื้อหา Flash ภายนอกได้หรือไม่
Vape ประกอบด้วย PCB สองตัว เชื่อมต่อกันด้วยส่วนหัวพินตัวผู้มุมขวาขนาด 9 พิน 0.15 มม.:
Pin 1 จะแสดงด้วยแผ่นสี่เหลี่ยมบนบอร์ดจ่ายไฟ และแผ่นที่สอดคล้องกันที่ด้านล่างของบอร์ดลอจิก (ฝั่งตรงข้ามของไมโครคอนโทรลเลอร์, SPI Flash และ LCD) คำเตือน: เครื่องหมายพิน 1 อาจอยู่ตรงข้ามกันระหว่างบอร์ดทั้งสอง!
พินบอร์ดจ่ายไฟ | พินบอร์ดลอจิก | ชื่อ | การทำงาน |
---|---|---|---|
1 | 9 | วทท | แบตเตอรี่เป็นบวก (+) บนแผงจ่ายไฟ |
2 | 8 | วีบัส | +5V จากพอร์ต USB-C บนแผงจ่ายไฟพร้อมฟิวส์ SMD เครื่องหมาย "B" |
3 | 7 | จีเอ็นดี | กำลังไฟ/กราวด์สัญญาณ |
4 | 6 | COIL_DRV | สัญญาณควบคุมฮีตเตอร์จาก MCU บนลอจิกบอร์ด (แอคทีฟสูง) |
5 | 5 | PUFF_DET | สัญญาณการตรวจจับพัฟจากตัวควบคุม vape ของบอร์ดพลังงาน (หมายเหตุ 1) |
6 | 4 | CC2/SWCLK | USB-C Rd pulldown 2 / SWD ดีบักอินเทอร์เฟซนาฬิกาไปยัง MCU บนบอร์ดลอจิก |
7 | 3 | CC1/SWDIO | USB-C Rd pulldown 1 / SWD ข้อมูลอินเทอร์เฟซดีบักไปยัง MCU บนบอร์ดลอจิก |
8 | 2 | วีดีดี | จ่ายไฟ 3V จากตัวควบคุม LDO บนบอร์ดลอจิกไปยังตัวควบคุม vape |
9 | 1 | COIL_DET? | การตรวจจับคอยล์ทำความร้อนไปยัง MCU บนลอจิกบอร์ด (ดูหมายเหตุ 2) |
ไมโครคอนโทรลเลอร์ซีรีส์ N32G01 ได้รับการโฆษณาในแผ่นข้อมูลว่ามีการเข้ารหัส Flash ในตัวและรองรับการบูตอย่างปลอดภัย แต่ฟีเจอร์นี้ (โชคดี) ไม่ได้ใช้กับ vape ที่ทดสอบจนถึงตอนนี้ (เช่น Kraze HD7K)
มีงานไม่มากนักในการวิศวกรรมย้อนกลับเฟิร์มแวร์ แต่สามารถรับแฟลชดัมพ์ได้โดยใช้ Segger J-Link และซอฟต์แวร์ J-Mem ที่เกี่ยวข้อง ซึ่งเข้าถึงได้ผ่านพอร์ตดีบัก/การเขียนโปรแกรม SWD เช่นเดียวกับ MCU แบบ Arm หลายตัว Flash จะอยู่ที่ 0x08000000 แต่ยังสะท้อนอยู่ที่ 0x00000000 เช่นกัน ดัมพ์ของเฟิร์มแวร์ถูกนำมาจากที่อยู่ 0x08000000-0x0800FFFF (64k) และการดูคร่าวๆ ที่การถ่ายโอนข้อมูลเฟิร์มแวร์แสดงให้เห็นว่ามีเพียงประมาณ 50% ของพื้นที่แฟลชเท่านั้นที่ถูกใช้จริง (ที่อยู่ก่อน 0x8000 ถึง 0xFFFF ล้วนเป็น 0xFF ไบต์ แสดงว่าหน่วยความจำถูกลบ/ไม่ได้ตั้งโปรแกรม) ดูเหมือนว่าไม่มีสตริงที่มนุษย์สามารถอ่านได้ในดัมพ์เฟิร์มแวร์
หมายเลขเวอร์ชัน "ลับ" จะแสดงบนหน้าจอหากมีการเปิดและปิดไฟ USB-C อย่างรวดเร็ว (แต่ดูเหมือนว่าจะเกิดขึ้นไม่สอดคล้องกัน) เมื่อลองใช้ Kraze HD7K หน้าจอจะเปลี่ยนเป็นสีดำ และข้อความ "GV-K23 0904V1" จะแสดงเป็นสีแดงบนข้อความสองบรรทัดเป็นเวลาสองสามวินาที ดูเหมือนว่าจะเรนเดอร์ด้วยฟอนต์ "System" ขนาด 12 พอยต์เวอร์ชันโมโนสเปซจาก Windows สิ่งนี้บ่งบอกถึงชื่อผลิตภัณฑ์ภายในของ "GV-K" และเฟิร์มแวร์ที่กำลังแก้ไข 1 ลงวันที่ 4 กันยายน 2023 บังเอิญที่ใกล้กับจุดสิ้นสุดของพื้นที่ที่อยู่ Flash ที่ใช้คือบล็อกไบต์ที่เต็มไปด้วย 0x00 และ 0xE8E4 ซึ่ง ดูน่าสงสัยเหมือนข้อมูลพิกเซลสีดำและสีส้มแดง การวิเคราะห์ข้อมูลดิบเพิ่มเติมจากภูมิภาคนี้เป็นการยืนยันว่าหมายเลขเวอร์ชันถูกจัดเก็บเป็นบิตแมปดิบ และไม่ได้แสดงผลจากสตริงข้อความ (อธิบายด้านล่าง)
ภายในเฟิร์มแวร์ Flash dump ที่อยู่ 0x7066-0x7E75 ดูเหมือนจะเป็นเวอร์ชันบิตแมปของหมายเลขเวอร์ชันที่กล่าวมาข้างต้น ดูเหมือนว่าจะมีขนาดเพียง 60x30 พิกเซล แต่มีช่องว่างภายใน 0x00 ไบต์รอบบิตแมปนี้ซึ่งไม่สอดคล้องกับขอบเขต 120 ไบต์ (60 พิกเซล) ทำให้การกำหนดขนาดรูปภาพ "จริง" เป็นเรื่องยากโดยไม่ต้องถอดรหัสเฟิร์มแวร์และค้นหาฟังก์ชัน ที่เรียกใช้หน้าจอเวอร์ชัน
เครื่องหมายการค้าทั้งหมดเป็นทรัพย์สินของเจ้าของที่เกี่ยวข้อง