From 1399cc375659ffb1cf5b1300ba201f198e8701e5 Mon Sep 17 00:00:00 2001 From: Matt Edholm Date: Sat, 9 May 2026 13:30:39 -0400 Subject: [PATCH] =?UTF-8?q?fix(provisioning):=20two-QR=20flow=20=E2=80=94?= =?UTF-8?q?=20WiFi=20join=20+=20open-browser=20trigger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User report: iOS sees the captive network correctly (the captive UI fires the moment any app makes an HTTP request), but won't auto-pop it from a QR-scan join. This is recent-iOS hardening — Apple no longer aggressively opens CNA on QR-initiated joins. Workaround: a single QR can only encode one action, but two QRs side-by-side close the loop — STEP 1 — WiFi-join QR (WIFI:T:WPA;S:NAME;P:pass;;) Phone joins PictureFrame. STEP 2 — URL QR (http://192.168.4.1/) Phone opens Safari → Safari hits 192.168.4.1 → that HTTP request is the "any app" trigger that fires the captive UI deterministically. Implementation: - WiFi QR shrinks from cell 5 (185 px) to cell 4 (148 px) to make room for the URL QR below. - URL QR is static, baked into ap_bg.bin via Python qrcode at gen time — no firmware QR-render changes needed for it. - epd_draw_ap_screen / _retry overlay coords updated to match the new WiFi QR position (581, 100, 4). - Left-panel step list now reads "1. Unlock / 2. Scan QR 1 / 3. Scan QR 2 / 4. Enter password and tap Connect". Co-Authored-By: Claude Opus 4.7 (1M context) --- data/waveshare73-v1/ap_bg.bin | Bin 192000 -> 192000 bytes data/waveshare73-v1/ap_bg_preview.png | Bin 12318 -> 12976 bytes data/waveshare73-v1/ap_bg_retry.bin | Bin 192000 -> 192000 bytes data/waveshare73-v1/ap_bg_retry_preview.png | Bin 11941 -> 12278 bytes scripts/gen_screens.py | 74 ++++++++++++++------ src/panels/waveshare73/v1/epd_driver.cpp | 6 +- 6 files changed, 56 insertions(+), 24 deletions(-) diff --git a/data/waveshare73-v1/ap_bg.bin b/data/waveshare73-v1/ap_bg.bin index 7852d38148cae6e125e05ee1587a55fa8adae3f5..0438f38718cef558fa1c3b84dcb0757cbcfe66da 100644 GIT binary patch literal 192000 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 literal 192000 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 DqF%LC diff --git a/data/waveshare73-v1/ap_bg_preview.png b/data/waveshare73-v1/ap_bg_preview.png index e4b0cc63eafe200e448147e6880f7d5eda68568a..81edecd39d823026e0e93d1637e91fabb7faec1b 100644 GIT binary patch literal 12976 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 Td<&NJz&{N&-TQ^ARxke#nP6x} literal 12318 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 diff --git a/data/waveshare73-v1/ap_bg_retry.bin b/data/waveshare73-v1/ap_bg_retry.bin index f74b3d46027e7a5f31bad24e06ff0cc2e318a23e..d86678ecb56f9e66a164aff4051bc6a04f040aec 100644 GIT binary patch literal 192000 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 Ih?t4#|MOTZGynhq literal 192000 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�=pXIx{Ze{JNDP%Qqq0bI9$d(cbpXP7@F;5t4? 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 Up!O6D?B@qGHS}(w)UBTWFBAo_jsO4v literal 11941 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

Nf_T{B6`39^j4jAec zjHf@yZcN1K;kf{m7pdhgd%P$kb7my^8RpXh zg!6w1$CyB{Z(+*V1n_k_U4@PZPtHN_?Q69B=gV}*R9TQ5TYH(&gv7RaGnXKyLikV8B z-3i`jZb=>ah<#-iJW25W)2GkxKl_i2NGv86x74^4+X3Suz2}Dq86^ zcqDtA=GiBGyQ$uO_aL9mn8t;}7GswTo+qjrygB9R z7?VZZ5mPq-cO#2FhK`>{NLj;lHyel%ra7U-8=lKy81uZ$e)#os9^7WI-g&Bq7VDc| zB8F30qTHsZ=Y14pWL2tP)UYPc&MfAucNNs>W0dzVE0qMFDS3O${)OIn3`#2EZlc*o zIq=LakpcUn`}~AMv8og>OS&T7NvJ4uME~shC|l3M$J@PZ4T=$+bA!^7yJ5k@#qPk zr~g^Roj?z%sYw_)*E|nBL1GELbS+0Am#rddX_gyT%LsGw=SslaU?w{=41Oiqp6A2a z_XtgU)!`KlL*buhz^LtKB##ZMW3;VCz%07nJWt%vq>0AFc5U<>d_<(yS(D;$X`W%6cE!JpZ>_NF&W-Y1HV?JP+-eB+S*2Av%vg8$M#pdZDWgm zS0b8^_w4x~u)M=cZm#D$HMddAiFbHWg5_E4dTYhaT+u6Bp#^m`!he>WpD?r*w(1$E za`~!YjByw#R2l8Sw=$8<+nr18djl2b*SCZ7xZcB>5ZAivnK{Rg_ufrD-~9+V5adcW z>2Jcn9tlzq zkUvl-b8CN-16PyYk94$_QU%UG0XnlhM2|8?h;1)$7(a6fdIFl-k%(X-2tp z1xA!2*vySdwKwK`O-xiQUg(NXl~eh{zwe6+#$k@>>a8Ey}T1Go>_lD5rwXH%zHre)jdAoXE8_;yEQ;LcM-+IB_V)e}jGCli6*W z0$gB^T^5dRS5Y3*d=5&*hYk%B4~d3oT1pzdmyS$xQ`mZ7q5SHm^aqRz;v27AlzDkg zT;EIMFyV!)L#DuiT&=zWq!-Td(^`e`R=f*@j{NH%Z+$ z^qyWS79In{+p%RSqQVROqn<$p{sizcZu^hOGD;W8lj0+&vPODAZ~l0whj1wV$|eS+~0w2IS9s#3B%oaOF3MN z&Q`fpju%TH=`MpCKZFi6pCM|4X!Bg_WhjcKLz9!ON{AP!Jk)`(#FhD_4fO!93*?Kv ziLVTgL?J@eBSdD0PQFR$1qUpP*|b*{Od3v4^81p!cZan*Phc6MRNn<)eeax$BQtLW z-)g+Vd_vtB=KqFzHG~26wmjJ69FUz7a@0OR2%z)46K7oPxTEUCMAE?s5cJ0>KtuI^ z;Vd{skg;hPU0@YZDswH~LADMAzPZW-l%#@<4FB2Zd&%;N$>Qv{0?R-{*p@+osK4D- zg$zbsM}-sc%KqEfV(N%Ss`C1b$L2VN^K zIjC(3F1@g<15_AHS*3;K7S|KDZCe|H0VsBJ<2>;`=Kzblk~lGuNy*Z*qV_}wr4|IfffAuh{q Wh?kn7KiGZ_Xy4S=EK#?A{J#MAup=n| diff --git a/scripts/gen_screens.py b/scripts/gen_screens.py index dbe8277..953a6ae 100644 --- a/scripts/gen_screens.py +++ b/scripts/gen_screens.py @@ -80,9 +80,12 @@ DIV2_X = 508 RIGHT_X = 510; RIGHT_W = 290 # 800-510 # QR positions (MUST match epd.cpp constants) -AP_QR_CELL = 5 +# WiFi-join QR — drawn at runtime by firmware. Cell shrunk from 5 to 4 +# (148 px instead of 185 px) to leave room for a second QR below it that +# opens Safari → forces iOS captive UI. +AP_QR_CELL = 4 AP_QR_MODS = 37 # version 5, ECC_LOW -AP_QR_PX = AP_QR_MODS * AP_QR_CELL # 185 +AP_QR_PX = AP_QR_MODS * AP_QR_CELL # 148 SETUP_QR_CELL = 5 SETUP_QR_MODS = 41 # version 6, ECC_LOW @@ -92,9 +95,13 @@ SETUP_QR_PX = SETUP_QR_MODS * SETUP_QR_CELL # 205 RIGHT_CX = RIGHT_X + RIGHT_W // 2 # 655 BODY_CY = BODY_Y + (H - BODY_Y) // 2 # 266 -AP_QR_X = RIGHT_CX - AP_QR_PX // 2 # 563 -AP_QR_Y = BODY_CY - AP_QR_PX // 2 # 174 (will nudge down below label) -AP_QR_Y = 185 # nudge down a bit for "SCAN TO CONNECT" label above +# Stacked layout: WiFi QR (top) + URL QR (bottom). Each has a label +# above it. AP_QR is dynamic — firmware overlays it at runtime. URL QR +# is static (always http://192.168.4.1/) and baked into the bg image. +AP_QR_X = RIGHT_CX - AP_QR_PX // 2 # centered horizontally +AP_QR_Y = 100 # below STEP 1 label +URL_QR_BOX = 4 # cell size in px +URL_QR_TARGET_Y = 320 # below STEP 2 label SETUP_QR_X = RIGHT_CX - SETUP_QR_PX // 2 # 553 SETUP_QR_Y = BODY_CY - SETUP_QR_PX // 2 # 164 @@ -213,15 +220,16 @@ def gen_ap(accent=YL, header="SETUP MODE — STEP 1 OF 2", qr_label="SCAN TO C bb = draw.textbbox((0,0), "WiFi", font=F_HEAD) draw.rectangle([28, BODY_Y+82, 28+bb[2]+2, BODY_Y+85], fill=accent) - # Steps — step 1 is the unlock-first prompt because iOS won't open - # the captive portal from a locked-phone scan, and we'd rather - # surface that requirement up front than have the user discover it - # by scanning, getting nothing, and giving up. + # Steps — step 1 is the unlock-first prompt (iOS won't fire the + # captive UI from a locked-phone scan). Two-QR flow because iOS + # in recent versions doesn't auto-open the captive portal even + # after CNA detects it; scanning the second QR opens Safari + # which forces the portal to render. steps = [ - ("Unlock your phone first", ""), - ("Scan the QR code →", "Phone joins PictureFrame-91F8"), - ("Browser opens — enter", "your home WiFi password"), - ("Tap Connect and watch", "for the QR code to change"), + ("Unlock your phone first", ""), + ("Scan QR 1 →", "joins PictureFrame WiFi"), + ("Scan QR 2 →", "page opens in Safari"), + ("Enter your WiFi password", "and tap Connect"), ] sy = BODY_Y + 95 step_pitch = 38 @@ -261,22 +269,46 @@ def gen_ap(accent=YL, header="SETUP MODE — STEP 1 OF 2", qr_label="SCAN TO C orientation_diagrams(draw, accent, show_active_ls=True) # ── Right panel ────────────────────────────────────────────── + # Stacked: STEP 1 (WiFi join QR, dynamic) above STEP 2 (URL QR, static + # → http://192.168.4.1/, baked into bg). The URL QR is the trick that + # forces iOS to open the captive portal: scanning a URL QR launches + # Safari, Safari hits 192.168.4.1, iOS sees the request go to a + # captive network and renders the portal instead of fighting whether + # to auto-show CNA. cx = RIGHT_CX - - # QR label — accent-colored on retry so the failure is unmistakable. label_color = accent if accent != YL else BK - text_center(draw, cx, AP_QR_Y - 26, qr_label, F_BIG, label_color) - # QR border: accent outer, black inner + # Step 1 — WiFi join (dynamic QR, overlaid by firmware) + text_center(draw, cx, AP_QR_Y - 22, "STEP 1 — JOIN WIFI", F_BIG, label_color) qx, qy, qp = AP_QR_X, AP_QR_Y, AP_QR_PX draw.rectangle([qx-6, qy-6, qx+qp+5, qy+qp+5], outline=accent, width=3) draw.rectangle([qx-3, qy-3, qx+qp+2, qy+qp+2], outline=BK, width=3) - - # Leave QR area white for firmware overlay leave_qr_white(draw, qx, qy, qp) + text_center(draw, cx, qy+qp+8, qr_label, F_FOOT, label_color) - # "Encodes WIFI:..." label below - text_center(draw, cx, qy+qp+10, "WIFI:T:WPA;S:PictureFrame-91F8;P:pictureframe;;", F_FOOT, (100,100,95)) + # Step 2 — URL QR (static, baked here so we don't need a second + # firmware render path; URL is fixed at http://192.168.4.1/). + url_qr = qrcode.QRCode( + version=None, + error_correction=qrcode.constants.ERROR_CORRECT_L, + box_size=URL_QR_BOX, + border=2, + ) + url_qr.add_data("http://" + "192.168.4.1" + "/") + url_qr.make(fit=True) + url_img = url_qr.make_image(fill_color=BK, back_color=WH).convert("RGB") + url_w, url_h = url_img.size + url_x = cx - url_w // 2 + url_y = URL_QR_TARGET_Y + + text_center(draw, cx, url_y - 22, "STEP 2 — OPEN PAGE", F_BIG, label_color) + # Decorative border around the static URL QR — same accent treatment + # as the WiFi QR for visual consistency. + draw.rectangle([url_x-6, url_y-6, url_x+url_w+5, url_y+url_h+5], outline=accent, width=3) + draw.rectangle([url_x-3, url_y-3, url_x+url_w+2, url_y+url_h+2], outline=BK, width=3) + img.paste(url_img, (url_x, url_y)) + + text_center(draw, cx, url_y + url_h + 8, "http://192.168.4.1/", F_FOOT, label_color) return img diff --git a/src/panels/waveshare73/v1/epd_driver.cpp b/src/panels/waveshare73/v1/epd_driver.cpp index 63ef97d..5670d69 100644 --- a/src/panels/waveshare73/v1/epd_driver.cpp +++ b/src/panels/waveshare73/v1/epd_driver.cpp @@ -175,14 +175,14 @@ static void draw_from_lfs(const char* path, uint8_t fallback_color, } void epd_draw_ap_screen(QRCode* qr) { - // AP_QR_X=563, AP_QR_Y=185, AP_QR_CELL=5 (must match gen_screens.py) - draw_from_lfs("/ap_bg.bin", COLOR_YELLOW, qr, 563, 185, 5); + // AP_QR_X=581, AP_QR_Y=100, AP_QR_CELL=4 (must match gen_screens.py) + draw_from_lfs("/ap_bg.bin", COLOR_YELLOW, qr, 581, 100, 4); } void epd_draw_ap_screen_retry(QRCode* qr) { // Same QR coordinates — only the bg .bin differs (red accents, // "Connection Failed — try again" label). - draw_from_lfs("/ap_bg_retry.bin", COLOR_RED, qr, 563, 185, 5); + draw_from_lfs("/ap_bg_retry.bin", COLOR_RED, qr, 581, 100, 4); } void epd_draw_setup_screen(QRCode* qr) {