{"id":444,"date":"2026-10-05T09:34:34","date_gmt":"2026-10-05T09:34:34","guid":{"rendered":"https:\/\/getbitcoin.guide\/articles\/?p=444"},"modified":"2026-10-17T09:32:31","modified_gmt":"2026-10-17T09:32:31","slug":"bitbox02-review","status":"publish","type":"post","link":"https:\/\/getbitcoin.guide\/articles\/bitbox02-review\/","title":{"rendered":"BitBox02 Review: Two Chips, Two Editions, Three Fixes"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>The BitBox02 is a Swiss made hardware wallet from Shift Crypto, built around two chips and sold in Multi and Bitcoin only editions that cannot be swapped later. Its August 2026 Dixence update fixed two severe firmware flaws, and the vendor\u2019s own advisory says the Bitcoin only edition escaped one of them.<\/strong><\/p>\n\n\n\n<div class=\"msq-audio\" data-article=\"bitbox02-review\" data-minutes=\"13\">\n<style>.msq-audio{margin:1.25em 0 1.75em;padding:16px 18px;background:#EEF3F8;border:1px solid #CBD8E6;border-radius:12px}\n.msq-audio-lead{margin:0 0 8px;font-size:.95em}.msq-audio audio{width:100%;margin:0 0 12px;display:block}\n.msq-toc-title{margin:0 0 6px;font-weight:700}.msq-toc ol{margin:0;padding:0;list-style:none}\n.msq-toc li{display:flex;gap:10px;align-items:center;padding:6px 6px;border-bottom:1px solid #CBD8E6;border-radius:8px}\n.msq-toc li:last-child{border-bottom:0}.msq-toc li.is-active{background:#fff}\n.msq-toc-play{flex:0 0 auto;width:30px;height:30px;border-radius:50%;border:0;background:#1F4E79;color:#fff;font:inherit;font-size:.72em;line-height:30px;padding:0;cursor:pointer}\n.msq-toc-play.is-playing{background:#B4531A}\n.msq-toc-time{flex:0 0 auto;min-width:3.1em;font-variant-numeric:tabular-nums;color:#4A5560;font-size:.9em}\n.msq-toc a{color:#1B1F24;text-decoration:none;line-height:1.35}.msq-toc li.is-active a{font-weight:700;color:#1F4E79}\n.msq-audio-note{margin:10px 0 0;font-size:.82em;color:#4A5560}\nh2.wp-block-heading[id]{scroll-margin-top:24px}\n.msq-hplay{display:inline-block;vertical-align:middle;width:26px;height:26px;margin:0 0 0 10px;border-radius:50%;border:0;background:#1F4E79;cursor:pointer;padding:0;position:relative;top:-2px}\n.msq-hplay::before{content:'\u25b6\ufe0e';display:block;color:#fff;font-size:11px;line-height:26px;text-align:center}\n.msq-hplay.is-playing{background:#B4531A}.msq-hplay.is-playing::before{content:'\u2016';font-size:13px;font-weight:700}\n.msq-bar{position:fixed;left:0;right:0;bottom:0;z-index:9000;display:flex;align-items:center;gap:10px;padding:8px 12px;padding-bottom:calc(8px + env(safe-area-inset-bottom));background:#FFFFFF;border-top:1px solid #CBD8E6;box-shadow:0 -4px 16px rgba(0,0,0,.08);font-size:.92em;color:#1B1F24;transition:transform .2s ease}\n.msq-bar.is-hidden{transform:translateY(130%)}\n.msq-bar-play{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:999px;background:#1F4E79;color:#fff;font:inherit;font-weight:700;padding:8px 14px 8px 12px;cursor:pointer;white-space:nowrap}\n.msq-bar-play.is-playing{background:#B4531A}\n.msq-bar-icon::before{content:'\u25b6\ufe0e';font-size:12px}.msq-bar-play.is-playing .msq-bar-icon::before{content:'\u2016';font-size:14px;font-weight:700}\n.msq-bar-chapter{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.msq-bar-time{flex:0 0 auto;font-variant-numeric:tabular-nums;color:#4A5560;font-size:.9em}\n.msq-bar-rate,.msq-bar-close{flex:0 0 auto;border:1px solid #CBD8E6;background:#fff;color:#1B1F24;font:inherit;font-size:.85em;line-height:1;border-radius:8px;padding:7px 9px;cursor:pointer}\n.msq-bar-close::before{content:'\u2715'}\n.msq-bar.msq-bar-pill{left:auto;right:14px;bottom:14px;padding:6px;padding-bottom:6px;border:1px solid #CBD8E6;border-radius:999px;box-shadow:0 6px 20px rgba(0,0,0,.15)}\n.msq-bar.msq-bar-pill .msq-bar-chapter,.msq-bar.msq-bar-pill .msq-bar-time,.msq-bar.msq-bar-pill .msq-bar-rate{display:none}\nbody.msq-has-bar{padding-bottom:76px}\n@media (max-width:600px){.msq-bar-time{display:none}.msq-bar{gap:8px;padding-left:10px;padding-right:10px}}\n.msq-s.msq-now{background:#EEF3F8;box-shadow:0 2px 0 #1F4E79;border-radius:2px}\ntr.msq-now td,tr.msq-now th{background:#EEF3F8;box-shadow:inset 0 -2px 0 #1F4E79}\n@media (hover:hover){.msq-s,tr[data-i]{cursor:pointer}.msq-s:hover{background:#EEF3F8}}<\/style>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"AudioObject\",\"@id\":\"https:\/\/getbitcoin.guide\/articles\/bitbox02-review\/#audio\",\"name\":\"BitBox02 Review: Two Chips, Two Editions, Three Fixes, read aloud\",\"description\":\"Synthetic voice reading of the article, recorded 5 October 2026.\",\"contentUrl\":\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/bitbox02-review-audio-202610051510.mp3\",\"encodingFormat\":\"audio\/mpeg\",\"duration\":\"PT13M16S\",\"uploadDate\":\"2026-10-05\",\"inLanguage\":\"en-GB\",\"isAccessibleForFree\":true,\"mainEntityOfPage\":\"https:\/\/getbitcoin.guide\/articles\/bitbox02-review\/\",\"hasPart\":[{\"@type\":\"Clip\",\"name\":\"BitBox02 Review: Two Chips, Two Editions, Three Fixes\",\"startOffset\":0,\"endOffset\":43},{\"@type\":\"Clip\",\"name\":\"What is the BitBox02, and which editions are on sale?\",\"startOffset\":43,\"endOffset\":106,\"url\":\"https:\/\/getbitcoin.guide\/articles\/bitbox02-review\/#what-is-the-bitbox02-and-which-editions-are-on-sale\"},{\"@type\":\"Clip\",\"name\":\"How does the dual chip design actually protect the seed?\",\"startOffset\":106,\"endOffset\":214,\"url\":\"https:\/\/getbitcoin.guide\/articles\/bitbox02-review\/#how-does-the-dual-chip-design-actually-protect-the-seed\"},{\"@type\":\"Clip\",\"name\":\"What did the August Dixence update fix, and on which editions?\",\"startOffset\":214,\"endOffset\":393,\"url\":\"https:\/\/getbitcoin.guide\/articles\/bitbox02-review\/#what-did-the-august-dixence-update-fix-and-on-which-editions\"},{\"@type\":\"Clip\",\"name\":\"Does the Bitcoin only edition really have less attack surface?\",\"startOffset\":393,\"endOffset\":441,\"url\":\"https:\/\/getbitcoin.guide\/articles\/bitbox02-review\/#does-the-bitcoin-only-edition-really-have-less-attack-surfac\"},{\"@type\":\"Clip\",\"name\":\"What do BitBox02 owners actually report?\",\"startOffset\":441,\"endOffset\":604,\"url\":\"https:\/\/getbitcoin.guide\/articles\/bitbox02-review\/#what-do-bitbox02-owners-actually-report\"},{\"@type\":\"Clip\",\"name\":\"How does the BitBox02 compare with the Nova and the alternatives?\",\"startOffset\":604,\"endOffset\":717,\"url\":\"https:\/\/getbitcoin.guide\/articles\/bitbox02-review\/#how-does-the-bitbox02-compare-with-the-nova-and-the-alternat\"},{\"@type\":\"Clip\",\"name\":\"What does the BitBox02 security page leave unanswered?\",\"startOffset\":717,\"endOffset\":796,\"url\":\"https:\/\/getbitcoin.guide\/articles\/bitbox02-review\/#what-does-the-bitbox02-security-page-leave-unanswered\"}],\"contentSize\":\"5.6 MB\"}<\/script>\n<p class=\"msq-audio-lead\"><strong>Listen to this article<\/strong>, about 13 minutes. A synthetic voice reads the article and announces each section title as it begins; tables are read row by row and the questions at the end are left out.<\/p>\n<audio class=\"msq-audio-player\" controls preload=\"metadata\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/bitbox02-review-audio-202610051510.mp3\"><\/audio>\n<nav class=\"msq-toc\" aria-label=\"In this article\"><p class=\"msq-toc-title\">In this article<\/p>\n<ol>\n<li data-start=\"0.0\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"0.0\" aria-label=\"Play from: BitBox02 Review: Two Chips, Two Editions, Three Fixes\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:00<\/span><a href=\"#top\">BitBox02 Review: Two Chips, Two Editions, Three Fixes<\/a><\/li>\n<li data-start=\"43.14\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"43.14\" aria-label=\"Play from: What is the BitBox02, and which editions are on sale?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:43<\/span><a href=\"#what-is-the-bitbox02-and-which-editions-are-on-sale\">What is the BitBox02, and which editions are on sale?<\/a><\/li>\n<li data-start=\"105.96\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"105.96\" aria-label=\"Play from: How does the dual chip design actually protect the seed?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">1:46<\/span><a href=\"#how-does-the-dual-chip-design-actually-protect-the-seed\">How does the dual chip design actually protect the seed?<\/a><\/li>\n<li data-start=\"214.06\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"214.06\" aria-label=\"Play from: What did the August Dixence update fix, and on which editions?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">3:34<\/span><a href=\"#what-did-the-august-dixence-update-fix-and-on-which-editions\">What did the August Dixence update fix, and on which editions?<\/a><\/li>\n<li data-start=\"393.04\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"393.04\" aria-label=\"Play from: Does the Bitcoin only edition really have less attack surface?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">6:33<\/span><a href=\"#does-the-bitcoin-only-edition-really-have-less-attack-surfac\">Does the Bitcoin only edition really have less attack surface?<\/a><\/li>\n<li data-start=\"440.9\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"440.9\" aria-label=\"Play from: What do BitBox02 owners actually report?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">7:21<\/span><a href=\"#what-do-bitbox02-owners-actually-report\">What do BitBox02 owners actually report?<\/a><\/li>\n<li data-start=\"603.64\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"603.64\" aria-label=\"Play from: How does the BitBox02 compare with the Nova and the alternatives?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">10:04<\/span><a href=\"#how-does-the-bitbox02-compare-with-the-nova-and-the-alternat\">How does the BitBox02 compare with the Nova and the alternatives?<\/a><\/li>\n<li data-start=\"716.78\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"716.78\" aria-label=\"Play from: What does the BitBox02 security page leave unanswered?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">11:57<\/span><a href=\"#what-does-the-bitbox02-security-page-leave-unanswered\">What does the BitBox02 security page leave unanswered?<\/a><\/li>\n<\/ol><\/nav>\n<p class=\"msq-audio-note\">Recorded 5 October 2026 from the article as published that day. Press a chapter to jump there; the highlighted line is what is playing. A play button sits beside every section heading, and once you scroll past this player a bar at the bottom of the screen keeps the controls in reach. Tap or click any sentence to hear the reading start from there.<\/p>\n<script>var MSQ_SENT = [[0.0,\"h\",\"bitbox02reviewtwochipstw\",43],[5.44,\"p\",\"thebitbox02isaswissmadeh\",131],[13.28,\"p\",\"itsaugust2026dixenceupda\",118],[21.8,\"p\",\"onthispagethechipsnamedi\",250],[43.14,\"h\",\"whatisthebitbox02andwhic\",42],[46.5,\"p\",\"twoproductlinescarrythen\",32],[48.7,\"p\",\"theoriginalbitbox02conne\",144],[60.62,\"p\",\"eachcomesinamultiedition\",46],[63.86,\"p\",\"readoffthevendorsownshop\",132],[78.3,\"p\",\"thesentencethatmattersmo\",53],[81.66,\"p\",\"bitboxwritesthattheediti\",117],[88.82,\"p\",\"multiaddsethereumanderc2\",106],[99.18,\"p\",\"thebitcoinonlyeditionstr\",97],[105.96,\"h\",\"howdoesthedualchipdesign\",46],[109.4,\"p\",\"everyhardwarewalletpages\",50],[113.12,\"p\",\"theusefuldetailiswhichch\",50],[116.96,\"p\",\"thefirmwarerepositorynam\",122],[131.6,\"p\",\"thesecuritypagereadon5oc\",94],[144.36,\"p\",\"thesplitisthepoint\",18],[146.0,\"p\",\"bitboxstatesthatthreesec\",160],[156.88,\"p\",\"theseedstaysencryptedinr\",91],[163.8,\"p\",\"amonotoniccounterinthese\",147],[173.64,\"p\",\"thenovadatasheetaddsthep\",271],[192.88,\"p\",\"bothchipssitundersecurit\",81],[199.04,\"p\",\"noneofthatisexoticin2026\",24],[201.72,\"p\",\"allofitbeingpublishedsti\",39],[204.92,\"p\",\"thefirmwareisreproducibl\",126],[214.06,\"h\",\"whatdidtheaugustdixenceu\",50],[217.74,\"p\",\"on17august2026bitboxpubl\",89],[227.42,\"p\",\"theadvisorysaystheyweref\",176],[240.06,\"p\",\"bitcoinmagazinecoveredit\",34],[242.22,\"p\",\"thisisthepartnoaffiliate\",71],[247.26,\"p\",\"thethreeissuesasthevendo\",38],[250.18,\"p\",\"abootloaderflawthatcould\",234],[265.78,\"p\",\"amemorycorruptionissueth\",140],[275.58,\"p\",\"andasilentpaymentsflawth\",98],[282.82,\"p\",\"theaffectedrangesarespec\",120],[290.14,\"t\",\"bootloadermaliciousfirmw\",132],[308.18,\"t\",\"memorycorruptiononadevic\",131],[323.9,\"t\",\"silentpaymentscoinslocke\",125],[341.62,\"t\",\"allthree\",99],[358.02,\"p\",\"twofootnotesworthhaving\",23],[359.9,\"p\",\"bitboxcreditsexternalres\",126],[370.34,\"p\",\"separatelythetradepressc\",259],[393.04,\"h\",\"doesthebitcoinonlyeditio\",52],[396.2,\"p\",\"lesscodemeanslessattacks\",68],[401.04,\"p\",\"inaugust2026itbrieflymea\",45],[404.2,\"p\",\"thememorycorruptionissue\",142],[413.56,\"p\",\"thatisoneissueoutofthree\",61],[418.28,\"p\",\"abitcoinonlybitbox02wass\",99],[424.72,\"p\",\"countingthethreedisclosu\",219],[440.9,\"h\",\"whatdobitbox02ownersactu\",34],[444.1,\"p\",\"wereadaboutthirtyseventr\",105],[452.86,\"p\",\"theheadlinenumbers48outo\",94],[462.98,\"p\",\"theseareaccountsofwhatpe\",165],[474.1,\"p\",\"fiveofthemdated\",15],[476.02,\"p\",\"atwostarreviewerinmay202\",114],[483.46,\"p\",\"aonestarreviewerinmay202\",128],[493.3,\"p\",\"aonestarreviewerinfebrua\",125],[505.34,\"p\",\"anotherindecember2025put\",47],[509.7,\"p\",\"bothwereshippingintothea\",31],[512.1,\"p\",\"aonestarreviewerinjuly20\",119],[521.26,\"p\",\"thatisthebackupstoryever\",59],[525.54,\"p\",\"reviewersinseptember2026\",150],[535.78,\"p\",\"onthebitboxapptrackeraco\",206],[553.34,\"p\",\"maintainersrepliedthroug\",209],[567.42,\"p\",\"theissueisopenandlowprio\",28],[570.18,\"p\",\"wheretheaccountsagreewit\",134],[579.02,\"p\",\"wheretheyaddsomethingitd\",183],[591.38,\"p\",\"importdutyistheotheronen\",57],[595.82,\"p\",\"ifalongpassphraseisparto\",97],[603.64,\"h\",\"howdoesthebitbox02compar\",54],[607.48,\"p\",\"priceswerereadfromtheven\",51],[612.4,\"p\",\"thechipandconnectivityro\",84],[618.12,\"t\",\"bitbox02\",114],[635.84,\"t\",\"bitbox02nova\",138],[656.36,\"t\",\"trezorsafe5\",132],[670.08,\"t\",\"blockstreamjade\",131],[684.36,\"p\",\"thenovasbluetoothdeserve\",80],[689.68,\"p\",\"bitboxcallstheimplementa\",180],[701.56,\"p\",\"thatisavendordesignclaim\",75],[707.04,\"p\",\"ifthewholecategoryisnews\",125],[716.78,\"h\",\"whatdoesthebitbox02secur\",46],[720.58,\"p\",\"forapagethisdetailedthea\",48],[724.26,\"p\",\"infullitsaysthebitbox02f\",109],[733.38,\"p\",\"nodatenoscopenopublished\",56],[738.42,\"p\",\"everyrankingpagerepeatsi\",103],[746.5,\"p\",\"thesecondgapiswherediscl\",34],[748.58,\"p\",\"checkedon5october2026the\",173],[761.3,\"p\",\"bitboxalsowrotethatitmay\",107],[768.18,\"p\",\"setagainstthepublishedth\",87],[774.54,\"p\",\"theyarestillthetwoacaref\",46],[777.1,\"p\",\"thepracticalconclusionis\",119],[785.3,\"p\",\"bitboxsaysitwillneverask\",155]];\n(function(){\n  function init(){\n  var root = document.querySelector('.msq-audio'); if (!root) { return; }\n  var audio = root.querySelector('audio'), items = Array.prototype.slice.call(root.querySelectorAll('.msq-toc li'));\n  var starts = items.map(function(li){ return parseFloat(li.getAttribute('data-start')) || 0; });\n  var names = items.map(function(li){ return li.querySelector('a').textContent; });\n  var anchors = items.map(function(li){ var h = li.querySelector('a').getAttribute('href') || ''; return (h.charAt(0) === '#' && h !== '#top') ? document.getElementById(h.slice(1)) : null; });\n  var article = root.getAttribute('data-article') || location.pathname, minutes = root.getAttribute('data-minutes') || '';\n  var marks = {}, started = false, pausedAt = -1, closed = false, ended = false;\n  var RATES = [1, 1.25, 1.5], rate = 1;\n  try { var saved = parseFloat(localStorage.getItem('msq-audio-rate')); if (RATES.indexOf(saved) >= 0) { rate = saved; } } catch (e) {}\n  audio.playbackRate = rate;\n  function track(name, extra){ try { if (typeof gtag === 'function') { var p = { article: article }; for (var k in extra) { p[k] = extra[k]; } gtag('event', name, p); } } catch (e) {} }\n  function current(){ var t = audio.currentTime, idx = 0; for (var i = 0; starts.length > i; i += 1) { if (t + 0.25 >= starts[i]) { idx = i; } } return idx; }\n  function onScreen(){\n    var line = window.innerHeight \/ 3, idx = 0;\n    for (var i = 0; anchors.length > i; i += 1) { var el = anchors[i]; if (el && line >= el.getBoundingClientRect().top) { idx = i; } }\n    return idx;\n  }\n  function fmt(s){ s = Math.max(0, Math.round(s || 0)); var m = Math.floor(s \/ 60), r = s % 60; return m + ':' + (10 > r ? '0' : '') + r; }\n  function play(from, source){\n    if (from !== null) { audio.currentTime = from; }\n    var p = audio.play(); if (p && p.catch) { p.catch(function(){}); }\n    track(from === null ? 'audio_resume' : 'audio_chapter', { chapter: names[current()], start: Math.round(audio.currentTime), source: source });\n  }\n  var hbtns = anchors.map(function(el, i){\n    if (!el) { return null; }\n    var b = document.createElement('button'); b.type = 'button'; b.className = 'msq-hplay'; b.setAttribute('aria-label', 'Play this section: ' + names[i]);\n    b.addEventListener('click', function(){\n      if (!audio.paused && current() === i) { audio.pause(); track('audio_pause', { source: 'heading' }); return; }\n      play(starts[i], 'heading');\n    });\n    el.appendChild(b); return b;\n  });\n  var bar = document.createElement('div'); bar.className = 'msq-bar msq-bar-pill is-hidden'; bar.setAttribute('role', 'region'); bar.setAttribute('aria-label', 'Audio player');\n  var playBtn = document.createElement('button'); playBtn.type = 'button'; playBtn.className = 'msq-bar-play';\n  var icon = document.createElement('span'); icon.className = 'msq-bar-icon'; icon.setAttribute('aria-hidden', 'true');\n  var label = document.createElement('span'); label.className = 'msq-bar-label';\n  playBtn.appendChild(icon); playBtn.appendChild(label);\n  var chap = document.createElement('span'); chap.className = 'msq-bar-chapter';\n  var clock = document.createElement('span'); clock.className = 'msq-bar-time';\n  var rateBtn = document.createElement('button'); rateBtn.type = 'button'; rateBtn.className = 'msq-bar-rate'; rateBtn.setAttribute('aria-label', 'Playback speed');\n  var closeBtn = document.createElement('button'); closeBtn.type = 'button'; closeBtn.className = 'msq-bar-close'; closeBtn.setAttribute('aria-label', 'Close the audio bar');\n  bar.appendChild(playBtn); bar.appendChild(chap); bar.appendChild(clock); bar.appendChild(rateBtn); bar.appendChild(closeBtn);\n  document.body.appendChild(bar);\n  function showRate(){ rateBtn.textContent = (rate === 1 ? '1' : String(rate)) + 'x'; }\n  showRate();\n  rateBtn.addEventListener('click', function(){\n    rate = RATES[(RATES.indexOf(rate) + 1) % RATES.length]; audio.playbackRate = rate; showRate();\n    try { localStorage.setItem('msq-audio-rate', String(rate)); } catch (e) {}\n    track('audio_rate', { rate: rate });\n  });\n  closeBtn.addEventListener('click', function(){\n    closed = true; if (!audio.paused) { audio.pause(); } paint(); track('audio_bar_close', {});\n  });\n  function mode(){\n    if (!audio.paused) { return 'pause'; }\n    if (ended) { return 'again'; }\n    if (!started) { return 'listen'; }\n    return (pausedAt === onScreen()) ? 'resume' : 'section';\n  }\n  playBtn.addEventListener('click', function(){\n    var m = mode();\n    if (m === 'pause') { audio.pause(); track('audio_pause', { source: 'bar' }); return; }\n    if (m === 'again') { ended = false; play(0, 'bar'); return; }\n    if (m === 'resume') { play(null, 'bar'); return; }\n    play(starts[onScreen()], 'bar');\n  });\n  function paint(){\n    var idx = current(), playing = !audio.paused, m = mode();\n    items.forEach(function(li, i){\n      var on = (i === idx) && playing, b = li.querySelector('.msq-toc-play'), a = li.querySelector('a');\n      li.classList.toggle('is-active', on); b.classList.toggle('is-playing', on);\n      b.textContent = on ? '\u2016' : '\u25b6\ufe0e';\n      b.setAttribute('aria-label', (on ? 'Pause: ' : 'Play from: ') + a.textContent);\n    });\n    hbtns.forEach(function(b, i){ if (b) { var on = (i === idx) && playing; b.classList.toggle('is-playing', on); b.setAttribute('aria-label', (on ? 'Pause this section: ' : 'Play this section: ') + names[i]); } });\n    playBtn.classList.toggle('is-playing', playing);\n    label.textContent = m === 'pause' ? 'Pause' : m === 'again' ? 'Play again' : m === 'resume' ? 'Resume' : m === 'section' ? 'Play this section' : 'Listen, ' + minutes + ' min';\n    playBtn.setAttribute('aria-label', label.textContent);\n    chap.textContent = started ? names[(playing || m === 'resume') ? idx : onScreen()] : '';\n    clock.textContent = started ? fmt(audio.currentTime) + ' \/ ' + fmt(audio.duration) : '';\n    bar.classList.toggle('msq-bar-pill', !started);\n    var show = !closed && (started || 0 > root.getBoundingClientRect().bottom);\n    bar.classList.toggle('is-hidden', !show);\n    document.body.classList.toggle('msq-has-bar', show);\n  }\n  root.addEventListener('click', function(e){\n    var b = e.target.closest ? e.target.closest('.msq-toc-play') : null; if (!b) { return; }\n    var li = b.parentNode, s = parseFloat(b.getAttribute('data-start')) || 0;\n    if (!audio.paused && current() === items.indexOf(li)) { audio.pause(); track('audio_pause', { source: 'index' }); return; }\n    play(s, 'index');\n  });\n  audio.addEventListener('play', function(){ ended = false; closed = false; if (!started) { started = true; track('audio_play', { minutes: Math.round((audio.duration || 0) \/ 60) }); } paint(); });\n  audio.addEventListener('pause', function(){ pausedAt = current(); paint(); });\n  audio.addEventListener('timeupdate', function(){\n    paint();\n    if (audio.duration > 0) {\n      var pct = Math.floor(audio.currentTime \/ audio.duration * 100);\n      [25, 50, 75].forEach(function(m){ if (pct >= m && !marks[m]) { marks[m] = true; track('audio_progress', { percent: m }); } });\n    }\n  });\n  audio.addEventListener('ended', function(){ ended = true; track('audio_complete', {}); paint(); });\n  var ticking = false;\n  function onScroll(){ if (ticking) { return; } ticking = true; setTimeout(function(){ ticking = false; paint(); }, 80); }\n  window.addEventListener('scroll', onScroll, { passive: true }); window.addEventListener('resize', onScroll);\n  paint();\n  }\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); }\n})();\n\n(function(){\n  function start(){\n    var root = document.querySelector('.msq-audio'), audio = root ? root.querySelector('audio') : null;\n    var map = (typeof MSQ_SENT !== 'undefined') ? MSQ_SENT : [];\n    if (!root || !audio || !map.length) { return; }\n    var scope = root.closest('main') || root.closest('article') || root.closest('.entry-content') || document.body;\n    var SKIP = '.msq-audio,.msq,.msq-tool,.msq-end,.msq-bar,script,style,noscript,figcaption,#rank-math-faq,.rank-math-block,nav,header,footer';\n    function norm(s){ return s.toLowerCase().replace(\/[^a-z0-9]+\/g, ''); }\n    var nodes = [], stream = '', walker = document.createTreeWalker(scope, NodeFilter.SHOW_TEXT, null), n;\n    while ((n = walker.nextNode())) {\n      var el = n.parentElement; if (!el || el.closest(SKIP)) { continue; }\n      var raw = n.nodeValue, keep = [], norms = '';\n      for (var i = 0; raw.length > i; i += 1) { var c = raw.charAt(i).toLowerCase(); if (\/[a-z0-9]\/.test(c)) { keep.push(i); norms += c; } }\n      if (!norms) { continue; }\n      nodes.push({ node: n, a: stream.length, b: stream.length + norms.length, keep: keep });\n      stream += norms;\n    }\n    var segs = [], cursor = 0, lastRow = null;\n    map.forEach(function(m, idx){\n      var kind = m[1], f = m[2], len = m[3];\n      if (kind === 't') {\n        var rows = scope.querySelectorAll('tr'), after = !lastRow;\n        for (var r = 0; rows.length > r; r += 1) {\n          var tr = rows[r];\n          if (!after) { if (tr === lastRow) { after = true; } continue; }\n          var cell = tr.querySelector('td,th');\n          if (cell && norm(cell.textContent).indexOf(f) === 0) { tr.setAttribute('data-i', idx); lastRow = tr; break; }\n        }\n        return;\n      }\n      var p = stream.indexOf(f, cursor); if (0 > p) { return; }\n      segs.push({ i: idx, a: p, b: Math.min(p + len, stream.length) }); cursor = p + len;\n    });\n    var si = 0;\n    nodes.forEach(function(nd){\n      var frag = document.createDocumentFragment(), raw = nd.node.nodeValue, rawPos = 0, any = false;\n      for (var k = si; segs.length > k; k += 1) {\n        var sg = segs[k]; if (sg.a >= nd.b) { break; } if (nd.a >= sg.b) { continue; }\n        var s = Math.max(sg.a, nd.a), e = Math.min(sg.b, nd.b);\n        var rs = nd.keep[s - nd.a], re2 = nd.keep[e - nd.a - 1] + 1;\n        if (rs > rawPos) { frag.appendChild(document.createTextNode(raw.slice(rawPos, rs))); }\n        var span = document.createElement('span'); span.className = 'msq-s'; span.setAttribute('data-i', sg.i); span.textContent = raw.slice(rs, re2);\n        frag.appendChild(span); rawPos = re2; any = true;\n        if (sg.b > nd.b) { break; }\n      }\n      while (segs.length > si && nd.b >= segs[si].b) { si += 1; }\n      if (!any) { return; }\n      if (raw.length > rawPos) { frag.appendChild(document.createTextNode(raw.slice(rawPos))); }\n      nd.node.parentNode.replaceChild(frag, nd.node);\n    });\n    var starts = map.map(function(m){ return m[0]; }), curIdx = -1, lastUser = 0, timer = null, autoUntil = 0, dragging = false;\n    function idxAt(t){ var lo = 0, hi = starts.length; while (hi > lo + 1) { var mid = (lo + hi) >> 1; if (t + 0.15 >= starts[mid]) { lo = mid; } else { hi = mid; } } return (t + 0.15 >= starts[0]) ? lo : -1; }\n    function setNow(i){\n      if (i === curIdx) { return; }\n      Array.prototype.forEach.call(scope.querySelectorAll('.msq-now'), function(el){ el.classList.remove('msq-now'); });\n      curIdx = i; if (0 > i) { return; }\n      var els = scope.querySelectorAll('[data-i=\"' + i + '\"]'); if (!els.length) { return; }\n      Array.prototype.forEach.call(els, function(el){ el.classList.add('msq-now'); });\n      var r = els[0].getBoundingClientRect(), now = Date.now();\n      if (!dragging && now > lastUser + 2500 && (80 > r.top || r.bottom > window.innerHeight - 140)) {\n        var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n        autoUntil = now + (reduce ? 400 : 1600);\n        els[0].scrollIntoView({ block: 'center', behavior: reduce ? 'auto' : 'smooth' });\n      }\n    }\n    function tick(){ if (!audio.paused) { setNow(idxAt(audio.currentTime)); } }\n    function userScrolled(){ lastUser = Date.now(); }\n    ['wheel', 'touchmove', 'keydown'].forEach(function(ev){ window.addEventListener(ev, userScrolled, { passive: true }); });\n    window.addEventListener('scroll', function(){ if (Date.now() > autoUntil) { userScrolled(); } }, { passive: true });\n    window.addEventListener('mousedown', function(e){ if (e.clientX >= document.documentElement.clientWidth) { dragging = true; userScrolled(); } }, { passive: true });\n    window.addEventListener('mouseup', function(){ if (dragging) { dragging = false; userScrolled(); } }, { passive: true });\n    audio.addEventListener('play', function(){ if (timer) { clearInterval(timer); } timer = setInterval(tick, 150); tick(); });\n    audio.addEventListener('pause', function(){ if (timer) { clearInterval(timer); timer = null; } });\n    scope.addEventListener('click', function(e){\n      if (e.target.closest('a, button, input, select, textarea, label, summary, .msq, .msq-tool, .msq-end, .msq-audio, .msq-bar')) { return; }\n      var sel = window.getSelection ? String(window.getSelection()) : '';\n      if (sel && sel.trim()) { return; }\n      var el = e.target.closest('[data-i]'); if (!el) { return; }\n      var i = parseInt(el.getAttribute('data-i'), 10); if (isNaN(i)) { return; }\n      if (!audio.paused && i === curIdx) { return; }\n      lastUser = Date.now();\n      audio.currentTime = starts[i];\n      var p = audio.play(); if (p && p.catch) { p.catch(function(){}); }\n      try { if (typeof gtag === 'function') { gtag('event', 'audio_chapter', { article: location.pathname, source: 'sentence', start: Math.round(starts[i]) }); } } catch (err) {}\n    });\n    audio.addEventListener('seeked', tick);\n    audio.addEventListener('ended', function(){ setNow(-1); });\n  }\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', start); } else { start(); }\n})();<\/script>\n<\/div>\n\n\n\n<p class=\"msq-hook wp-block-paragraph\">On this page: the chips named in BitBox&#8217;s own datasheets and security page, the three issues disclosed in the 17 August 2026 Dixence advisory with the exact firmware ranges each one hit, prices read off the vendor&#8217;s shop on 5 October 2026, and five dated accounts from Trustpilot and the public issue tracker.<\/p>\n\n\n\n<div class=\"msq\" id=\"ms-quiz\" data-slug=\"bitbox02-review\" data-category=\"self custody and wallets\" data-list=\"1\">\n<style>.msq,.msq-hook,.msq-box,.msq-end,.msq-tool{--msq-accent:#1F4E79;--msq-accent-text:#FFFFFF;--msq-line:#CBD8E6;--msq-warn:#B4531A;--msq-muted:#4A5560;--msq-tint:#EEF3F8;--msq-base:#FFFFFF}\n.msq{margin:1.25em 0 1.75em}\n.msq-hook{border-left:3px solid var(--msq-accent);padding:6px 14px;color:var(--msq-muted);font-size:.97em}\n.msq-box{background:var(--msq-tint);border:1px solid var(--msq-line);border-radius:12px;padding:0}\n.msq-box>summary{cursor:pointer;list-style:none;padding:14px 18px;font-weight:700;color:var(--msq-accent)}\n.msq-box>summary::-webkit-details-marker{display:none}\n.msq-box>summary::before{content:\"+\";display:inline-block;width:1.1em;font-weight:800}\n.msq-box[open]>summary::before{content:\"\\00d7\"}\n.msq-body{padding:2px 18px 18px}\n.msq-intro{margin:0 0 12px;font-size:.95em;color:var(--msq-muted)}\n.msq-list{margin:0;padding:0;list-style:none}\n.msq-q{margin:0 0 18px;padding:0}\n.msq-question{font-weight:700;margin:0 0 8px}\n.msq-options{display:flex;flex-direction:column;gap:8px}\n.msq-opt{text-align:left;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:8px;padding:10px 12px;font:inherit;font-size:.95em;color:inherit;cursor:pointer;line-height:1.35}\n.msq-opt:hover{border-color:var(--msq-accent)}\n.msq-opt[disabled]{cursor:default}\n.msq-opt.is-right{border-color:var(--msq-accent);background:var(--msq-line);font-weight:700}\n.msq-opt.is-wrong{border-color:var(--msq-warn);color:var(--msq-warn)}\n.msq-explain{margin:8px 0 0;font-size:.92em;padding:10px 12px;border-left:3px solid var(--msq-accent);background:var(--msq-base);border-radius:0 8px 8px 0}\n.msq-explain[hidden]{display:none}\n.msq-verdict{font-weight:700}\n.msq-result{margin-top:14px;padding:14px 16px;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:10px}\n.msq-result[hidden]{display:none}\n.msq-result h3{margin:0 0 6px;font-size:1.1em}\n.msq-result p{margin:0 0 8px}\n.msq-jump{margin:0 0 8px;padding-left:1.2em}\n.msq-form{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}\n.msq-form input[type=email]{flex:1 1 220px;padding:10px 12px;border:1px solid var(--msq-muted);border-radius:8px;font:inherit;background:#fff}\n.msq-btn{background:var(--msq-accent);color:var(--msq-accent-text);border:0;border-radius:8px;padding:11px 18px;font:inherit;font-weight:700;cursor:pointer}\n.msq-btn:hover{filter:brightness(.92)}\n.msq-btn[disabled]{opacity:.7;cursor:default}\n.msq-no{font-size:.9em;color:var(--msq-muted);margin-left:4px}\n.msq-privacy{margin:6px 0 0;font-size:.82em;color:var(--msq-muted);flex-basis:100%}\n.msq-hp{position:absolute;left:-5000px;width:1px;height:1px;overflow:hidden}\n.msq-msg{margin:8px 0 0;font-size:.92em}\n.msq-end{margin:1.5em 0;padding:18px;border:1px solid var(--msq-accent);border-radius:12px;text-align:center;background:var(--msq-tint)}\n.msq-end p{margin:0 0 12px}\n.msq-end .msq-body{text-align:left;padding:16px 0 0}\n.msq-end .msq-start-test[hidden]{display:none}\n.msq-tool{margin:1.5em 0;padding:18px 20px;background:var(--msq-tint);border:1px solid var(--msq-line);border-radius:12px}\n.msq-tool h3{margin:0 0 6px;font-size:1.15em}\n.msq-tool p{margin:0 0 10px}\n.msq-tool .msq-note{font-size:.85em;color:var(--msq-muted);margin:10px 0 0}\n.msq-check label{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--msq-line);cursor:pointer;line-height:1.4}\n.msq-check label:last-of-type{border-bottom:0}\n.msq-check input{margin-top:5px;flex:0 0 auto;width:18px;height:18px;accent-color:var(--msq-accent)}\n.msq-check-count{font-weight:700;margin:10px 0 0}\n.msq-verdict-box{margin:12px 0 0;padding:10px 14px;border-radius:8px;background:var(--msq-base);border-left:3px solid var(--msq-warn)}\n.msq-verdict-box[hidden]{display:none}\n.msq-calc{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px}\n.msq-calc label{display:flex;flex-direction:column;gap:4px;font-size:.92em}\n.msq-calc input,.msq-calc select{padding:8px 10px;border:1px solid var(--msq-muted);border-radius:8px;font:inherit;background:#fff}\n.msq-calc-out{grid-column:1 \/ -1;margin-top:6px;padding:12px 14px;background:var(--msq-base);border-radius:8px;border:1px solid var(--msq-line)}\n.msq-calc-out strong{font-size:1.15em}\n.msq-choose label{display:block;padding:9px 12px;margin:0 0 8px;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:8px;cursor:pointer}\n.msq-choose input{margin-right:8px;accent-color:var(--msq-accent)}\n.msq-choice-result{margin-top:10px;padding:12px 14px;background:var(--msq-base);border-left:3px solid var(--msq-accent);border-radius:0 8px 8px 0}\n.msq-choice-result[hidden]{display:none}\n@media (max-width:600px){.msq-calc{grid-template-columns:1fr}}\nh2.wp-block-heading[id]{scroll-margin-top:24px}<\/style>\n<noscript><style>.msq-explain{display:block !important}<\/style><\/noscript>\n<details class=\"msq-box\">\n<summary>Think you already know this? Five questions, one minute.<\/summary>\n<div class=\"msq-body\">\n<p class=\"msq-intro\">Every answer is on this page. Answer from what you know now; the page fills in the rest.<\/p>\n<ol class=\"msq-list\">\n<li class=\"msq-q\" data-q=\"1\" data-answer=\"b\" data-title=\"How does the dual chip design actually protect the seed?\" data-section=\"#how-does-the-dual-chip-design-actually-protect-the-seed\">\n<p class=\"msq-question\">1. Which secure chip does BitBox name for the BitBox02, and which for the Nova?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 1 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">The same chip in both, an EAL6+ element<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">ATECC608B in the BitBox02, OPTIGA Trust M V3 in the Nova<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Neither device has a secure chip, only a microcontroller<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Per <a href=\"https:\/\/bitbox.swiss\/bitbox02\/security-features\/\" target=\"_blank\" rel=\"noopener\">the BitBox security page<\/a>, read on 5 October 2026, the microcontroller is the same Microchip ATSAMD51J20A in both, while the secure element differs between the two lines. <a class=\"msq-section\" href=\"#how-does-the-dual-chip-design-actually-protect-the-seed\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"2\" data-answer=\"c\" data-title=\"What did the August Dixence update fix, and on which editions?\" data-section=\"#what-did-the-august-dixence-update-fix-and-on-which-editions\">\n<p class=\"msq-question\">2. Which firmware version does the Dixence advisory say is clear of all three issues?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 2 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">9.21.0 and later<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">9.26.4 and later<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">9.26.5 and later<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The <a href=\"https:\/\/blog.bitbox.swiss\/en\/bitbox-08-2026-dixence-update\/\" target=\"_blank\" rel=\"noopener\">Dixence advisory<\/a> of 17 August 2026 states that all BitBox devices on firmware versions from 9.26.5 are not affected. The newest release at the time of writing is 9.27.1, published 31 August 2026. <a class=\"msq-section\" href=\"#what-did-the-august-dixence-update-fix-and-on-which-editions\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"3\" data-answer=\"a\" data-title=\"Does the Bitcoin only edition really have less attack surface?\" data-section=\"#does-the-bitcoin-only-edition-really-have-less-attack-surfac\">\n<p class=\"msq-question\">3. Why does BitBox say the Bitcoin only edition escaped the memory corruption issue?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 3 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Because its firmware does not contain the affected code<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Because it uses a different secure chip<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Because it cannot be connected to a computer<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>That is the vendor&#8217;s own wording in the <a href=\"https:\/\/blog.bitbox.swiss\/en\/bitbox-08-2026-dixence-update\/\" target=\"_blank\" rel=\"noopener\">Dixence advisory<\/a>. The same edition was still inside the affected range for the bootloader and silent payments issues, so it was not untouched. <a class=\"msq-section\" href=\"#does-the-bitcoin-only-edition-really-have-less-attack-surfac\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"4\" data-answer=\"b\" data-title=\"What is the BitBox02, and which editions are on sale?\" data-section=\"#what-is-the-bitbox02-and-which-editions-are-on-sale\">\n<p class=\"msq-question\">4. Can a Multi edition be turned into a Bitcoin only edition later?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 4 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Yes, by flashing the other firmware<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">No, the shop calls them two different products that cannot be converted<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Only within the two year warranty period<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The <a href=\"https:\/\/shop.bitbox.swiss\/en\/products\/bitbox02-80\/\" target=\"_blank\" rel=\"noopener\">BitBox02 product page<\/a> states the editions are two different products that cannot be converted later, and the bootloader refuses firmware built for the other edition. <a class=\"msq-section\" href=\"#what-is-the-bitbox02-and-which-editions-are-on-sale\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"5\" data-answer=\"b\" data-title=\"What does the BitBox02 security page leave unanswered?\" data-section=\"#what-does-the-bitbox02-security-page-leave-unanswered\">\n<p class=\"msq-question\">5. What is missing from the published claim that the firmware was externally audited?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 5 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Nothing, the full report is linked<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">The date, the scope and a report a reader can open<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">The name of the auditing firm<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The security page names <a href=\"https:\/\/census-labs.com\/\" target=\"_blank\" rel=\"noopener\">Census Labs<\/a> as the auditor but gives no date, scope or published report, and the firmware repository has <a href=\"https:\/\/github.com\/BitBoxSwiss\/bitbox02-firmware\/security\/advisories\" target=\"_blank\" rel=\"noopener\">no published security advisories<\/a> either, checked 5 October 2026. <a class=\"msq-section\" href=\"#what-does-the-bitbox02-security-page-leave-unanswered\">Read the section<\/a><\/p>\n<\/li>\n<\/ol>\n<div class=\"msq-result\" hidden><\/div>\n<\/div>\n<\/details>\n<script>(function(){\n  if (window.__msqInit) { return; }\n  window.__msqInit = true;\n  var root = document.getElementById('ms-quiz');\n  if (!root) { return; }\n  var meta = { slug: root.getAttribute('data-slug'), category: root.getAttribute('data-category'),\n               list: root.getAttribute('data-list') || '1' };\n  function qs(el, s){ return el.querySelector(s); }\n  function qsa(el, s){ return Array.prototype.slice.call(el.querySelectorAll(s)); }\n  function track(name, params){\n    try { if (typeof gtag === 'function') { var p = params || {}; p.article = meta.slug; gtag('event', name, p); } } catch (e) {}\n  }\n  function jumpList(missed){\n    if (!missed.length) { return ''; }\n    return '<ul class=\"msq-jump\">' + missed.map(function(q){\n      return '<li><a href=\"' + q.getAttribute('data-section') + '\">' + q.getAttribute('data-title') + '<\/a><\/li>';\n    }).join('') + '<\/ul>';\n  }\n  function emailForm(){\n    return '<div class=\"msq-sub\"><p><strong>Get the next one.<\/strong> We publish new articles on ' + meta.category\n      + ' most weeks and recheck this page on Sundays. Email me when a new article goes up or this page changes.<\/p>'\n      + '<form class=\"msq-form\" method=\"post\" action=\"\/mail\/form.php\" novalidate>'\n      + '<input type=\"hidden\" name=\"list\" value=\"' + meta.list + '\">'\n      + '<input type=\"hidden\" name=\"name\" value=\"\">'\n      + '<label class=\"msq-hp\" aria-hidden=\"true\">Leave this empty<input type=\"text\" name=\"website\" tabindex=\"-1\" autocomplete=\"off\"><\/label>'\n      + '<input type=\"email\" name=\"email\" placeholder=\"you@example.com\" required aria-label=\"Email address\" autocomplete=\"email\">'\n      + '<button type=\"submit\" class=\"msq-btn\">Email me the updates<\/button>'\n      + '<a href=\"#\" class=\"msq-no\">No thanks<\/a>'\n      + '<p class=\"msq-privacy\">We store your email and this page\\'s topic, nothing else. Unsubscribe any time.<\/p>'\n      + '<\/form><p class=\"msq-msg\" aria-live=\"polite\"><\/p><\/div>';\n  }\n  \/* The autoresponder always answers 200 with its own page. A \".msg.err\" box means the\n     address was rejected, \"You're subscribed\" means accepted, and a redirect only happens\n     after a successful subscribe. Same reading as the landing pages on the other sites. *\/\n  function sendForm(form){\n    return fetch(form.getAttribute('action'), { method: 'POST', body: new FormData(form), credentials: 'same-origin', redirect: 'manual' })\n      .then(function(res){\n        if (res.type === 'opaqueredirect') { return { status: 'ok' }; }\n        if (res.status === 404) { return { status: 'notlive' }; }\n        if (!res.ok) { throw new Error('HTTP ' + res.status); }\n        return res.text().then(function(t){\n          var doc = new DOMParser().parseFromString(t, 'text\/html');\n          var err = doc.querySelector('.msg.err');\n          if (err) {\n            var m = err.textContent.trim();\n            if (\/something went wrong\/i.test(m)) { throw new Error(m); }\n            return { status: 'rejected', message: m };\n          }\n          if (\/you.re subscribed\/i.test(doc.body.textContent)) { return { status: 'ok' }; }\n          return { status: 'unknown' };\n        });\n      });\n  }\n  function wireForm(sub){\n    var form = qs(sub, '.msq-form'), msg = qs(sub, '.msq-msg');\n    qs(form, '.msq-no').addEventListener('click', function(e){\n      e.preventDefault();\n      sub.innerHTML = '<p class=\"msq-msg\">No problem. The Sunday refresh keeps this page current either way.<\/p>';\n      track('quiz_email', { result: 'declined' });\n    });\n    form.addEventListener('submit', function(e){\n      e.preventDefault();\n      var input = qs(form, 'input[name=email]'), btn = qs(form, '.msq-btn');\n      var email = input.value.trim(); input.value = email;\n      if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) { msg.textContent = 'That email does not look right.'; return; }\n      btn.disabled = true; btn.textContent = 'Sending';\n      function reset(){ btn.disabled = false; btn.textContent = 'Email me the updates'; }\n      sendForm(form).then(function(r){\n        if (r.status === 'ok' || r.status === 'unknown') {\n          sub.innerHTML = '<p class=\"msq-msg\"><strong>Done.<\/strong> We will email you when the next article on ' + meta.category\n            + ' goes up and when this page changes. If a confirmation email arrives, click it.<\/p>';\n          track('quiz_email', { result: r.status });\n          if (r.status === 'ok') { track('generate_lead', { method: 'quiz' }); }\n        } else if (r.status === 'notlive') {\n          msg.textContent = 'Sign up is not switched on yet for this site. Nothing was stored.'; reset();\n          track('quiz_email', { result: 'notlive' });\n        } else {\n          msg.textContent = r.message || 'Please check the email address and try again.'; reset();\n          track('quiz_email', { result: 'rejected' });\n        }\n      }).catch(function(){\n        msg.textContent = 'Could not reach the sign up service just now. Nothing was stored.'; reset();\n        track('quiz_email', { result: 'error' });\n      });\n    });\n  }\n  function finish(container, mode, score, total, missed){\n    var result = qs(container, '.msq-result');\n    track('quiz_complete', { mode: mode, score: score, total: total });\n    var h;\n    if (mode === 'pre') {\n      h = '<h3>You knew ' + score + ' of ' + total + ' before reading.<\/h3>';\n      h += (score === total) ? '<p>All of them. Read on anyway; the sections below carry the detail behind each answer.<\/p>'\n                             : '<p>The rest is below. Jump straight to what you missed:<\/p>' + jumpList(missed);\n      try { sessionStorage.setItem('msq-pre-' + meta.slug, String(score)); } catch (e) {}\n    } else {\n      var pre = null;\n      try { pre = sessionStorage.getItem('msq-pre-' + meta.slug); } catch (e) {}\n      h = '<h3>You got ' + score + ' of ' + total + '.<\/h3>';\n      if (pre !== null) { h += '<p>Before reading you had ' + pre + ' of ' + total + '.<\/p>'; }\n      if (missed.length) { h += '<p>Worth a second look:<\/p>' + jumpList(missed); }\n      h += emailForm();\n    }\n    result.innerHTML = h; result.hidden = false;\n    if (mode !== 'pre') { wireForm(qs(result, '.msq-sub')); }\n    result.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n  }\n  function setup(container, mode){\n    var qEls = qsa(container, '.msq-q'), answered = 0, score = 0, missed = [];\n    qEls.forEach(function(q){\n      var answer = q.getAttribute('data-answer'), opts = qsa(q, '.msq-opt'), explain = qs(q, '.msq-explain');\n      q.removeAttribute('data-done'); explain.hidden = true; qs(explain, '.msq-verdict').textContent = '';\n      opts.forEach(function(b){ b.disabled = false; b.classList.remove('is-right', 'is-wrong'); });\n      opts.forEach(function(b){\n        b.addEventListener('click', function(){\n          if (q.getAttribute('data-done')) { return; }\n          q.setAttribute('data-done', '1');\n          var ok = b.getAttribute('data-opt') === answer;\n          opts.forEach(function(o){ o.disabled = true; if (o.getAttribute('data-opt') === answer) { o.classList.add('is-right'); } });\n          if (ok) { score += 1; } else { b.classList.add('is-wrong'); missed.push(q); }\n          qs(explain, '.msq-verdict').textContent = ok ? 'Right. ' : 'Not quite. ';\n          explain.hidden = false;\n          answered += 1;\n          track('quiz_answer', { mode: mode, question: q.getAttribute('data-q'), correct: ok ? 1 : 0 });\n          if (answered === qEls.length) { finish(container, mode, score, qEls.length, missed); }\n        });\n      });\n    });\n  }\n  var box = qs(root, '.msq-box');\n  setup(root, 'pre');\n  if (box) { var skipFirst = box.hasAttribute('data-default-open'); box.addEventListener('toggle', function(){ if (!box.open) { return; } if (skipFirst) { skipFirst = false; return; } track('quiz_open', { mode: 'pre' }); }); }\n  \/* The end block sits far below this script, so it does not exist yet while this runs\n     during parsing. A delegated listener finds it at click time. *\/\n  document.addEventListener('click', function(e){\n    var startBtn = (e.target && e.target.closest) ? e.target.closest('.msq-start-test') : null;\n    if (!startBtn) { return; }\n    var end = startBtn.closest('.msq-end');\n    if (!end) { return; }\n    var mount = qs(end, '.msq-mount');\n    var clone = qs(root, '.msq-body').cloneNode(true);\n    var intro = qs(clone, '.msq-intro');\n    if (intro) { intro.textContent = 'The same five questions, now that you have read the page.'; }\n    var res = qs(clone, '.msq-result'); if (res) { res.hidden = true; res.innerHTML = ''; }\n    mount.innerHTML = ''; mount.appendChild(clone);\n    setup(mount, 'test');\n    startBtn.hidden = true;\n    track('quiz_open', { mode: 'test' });\n    mount.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    var first = qs(mount, '.msq-opt'); if (first) { first.focus({ preventScroll: true }); }\n  });\n  \/* Shared tool behaviour: checklists remember their ticks on this device, and a chooser\n     shows the result for the option picked. Calculators carry their own small script. *\/\n  function initTools(){\n    qsa(document, '.msq-check').forEach(function(box){\n      var key = 'msq-check-' + meta.slug + '-' + (box.getAttribute('data-id') || 'x');\n      var boxes = qsa(box, 'input[type=checkbox]'), count = qs(box, '.msq-check-count');\n      var yes = qs(box, '.msq-verdict-yes'), no = qs(box, '.msq-verdict-no');\n      var saved = {};\n      try { saved = JSON.parse(localStorage.getItem(key) || '{}'); } catch (e) {}\n      boxes.forEach(function(cb, i){ if (saved[i]) { cb.checked = true; } });\n      function refresh(){\n        var n = boxes.filter(function(cb){ return cb.checked; }).length, state = {};\n        boxes.forEach(function(cb, i){ if (cb.checked) { state[i] = 1; } });\n        try { localStorage.setItem(key, JSON.stringify(state)); } catch (e) {}\n        if (count) { count.textContent = n + ' of ' + boxes.length + (box.getAttribute('data-verb') || ' done'); }\n        if (yes && no) { yes.hidden = n === 0; no.hidden = n !== 0; }\n      }\n      boxes.forEach(function(cb){ cb.addEventListener('change', function(){ refresh(); track('tool_check', { tool: box.getAttribute('data-id') }); }); });\n      refresh();\n    });\n    qsa(document, '.msq-choose').forEach(function(box){\n      var results = qsa(box, '.msq-choice-result');\n      qsa(box, 'input[type=radio]').forEach(function(r){\n        r.addEventListener('change', function(){\n          results.forEach(function(el){ el.hidden = el.getAttribute('data-for') !== r.value; });\n          track('tool_choose', { tool: box.getAttribute('data-id'), choice: r.value });\n        });\n      });\n    });\n  }\n  \/\/ read progress: how far down the article the reader has scrolled, fired once per quarter\n  (function(){\n    var art = root.closest('article') || root.parentNode, fired = {};\n    function check(){\n      var top = art.getBoundingClientRect().top + window.pageYOffset, h = art.offsetHeight || 1;\n      var seen = (window.pageYOffset + window.innerHeight - top) \/ h * 100;\n      [25, 50, 75, 100].forEach(function(m){ if (seen >= m && !fired[m]) { fired[m] = true; track('read_progress', { percent: m }); } });\n    }\n    window.addEventListener('scroll', check, { passive: true }); window.addEventListener('load', check);\n  })();\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initTools); } else { initTools(); }\n})();<\/script>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-is-the-bitbox02-and-which-editions-are-on-sale\">What is the BitBox02, and which editions are on sale?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Two product lines carry the name today. The original BitBox02 connects by USB-C only, and the <a href=\"https:\/\/shop.bitbox.swiss\/en\/products\/bitbox02-nova-79\/\" target=\"_blank\" rel=\"noopener\">BitBox02 Nova<\/a> adds a glass display, an optional Bluetooth path and support for iPhone and iPad, which the original does not. Each comes in a Multi edition and a Bitcoin only edition. Read off the vendor\u2019s own shop on 5 October 2026, the BitBox02 was listed at 124.17 euros and the Nova at 145.83 euros, both excluding VAT, each with a two year warranty.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The sentence that matters most on those pages is the dullest one. BitBox writes that the editions &#8220;are two different products that can\u2019t be converted later&#8221;, so the choice is made at checkout and not in software. Multi adds Ethereum and ERC20 tokens, Cardano, Litecoin, what the shop describes as 1500 or more further tokens, and FIDO U2F login. The <a href=\"https:\/\/shop.bitbox.swiss\/en\/products\/bitbox02-80\/\" target=\"_blank\" rel=\"noopener\">Bitcoin only edition<\/a> strips all of that out, which BitBox frames as removing attack surface rather than features.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/bitbox02-dual-chip-internal-circuitry.jpg\" alt=\"A macro view of the dual chip architecture inside a dismantled bitbox02 hardware wallet.\" class=\"wp-image-442\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/bitbox02-dual-chip-internal-circuitry.jpg 1376w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/bitbox02-dual-chip-internal-circuitry-300x167.jpg 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/bitbox02-dual-chip-internal-circuitry-1024x572.jpg 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/bitbox02-dual-chip-internal-circuitry-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">A microcontroller beside a separate secure chip, the split BitBox calls its dual chip design.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-does-the-dual-chip-design-actually-protect-the-seed\">How does the dual chip design actually protect the seed?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Every hardware wallet page says &#8220;secure chip&#8221; and stops there. The useful detail is which chip, and what it is allowed to know. The <a href=\"https:\/\/github.com\/BitBoxSwiss\/bitbox02-firmware\" target=\"_blank\" rel=\"noopener\">firmware repository<\/a> names the microcontroller as a Microchip ATSAMD51J20A, a 120 MHz Cortex-M4F, talking to a separate secure element over I2C. The <a href=\"https:\/\/bitbox.swiss\/bitbox02\/security-features\/\" target=\"_blank\" rel=\"noopener\">security page<\/a>, read on 5 October 2026, names that element: ATECC608B in the BitBox02, OPTIGA Trust M V3 in the Nova.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The split is the point. BitBox states that three secrets are needed to reach the encrypted wallet seed: one held on the secure chip, one on the microcontroller, and the device password, which lives only in the owner\u2019s head. The seed stays encrypted in RAM while the device is in use and is decrypted only for as long as a signature takes. A monotonic counter in the secure chip caps password attempts and password stretching makes each guess slow, which is how a short password survives contact with a patient thief.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/bitbox.swiss\/bitbox02\/nova\/BitBox02_Nova_BTC_Datasheet.pdf\" target=\"_blank\" rel=\"noopener\">Nova datasheet<\/a> adds the parts a buyer can check: five sources of entropy for seed generation, an attestation key written at the factory so the app can spot a counterfeit, a bootloader that refuses unsigned firmware, downgrades and firmware built for the other edition, and the option to display the firmware hash before it runs. Both chips sit under security grade epoxy, and the casing pins break if the halves are prised apart. None of that is exotic in 2026. All of it being published still is not standard. The firmware is reproducible and <a href=\"https:\/\/walletscrutiny.com\/\" target=\"_blank\" rel=\"noopener\">WalletScrutiny<\/a> tests that claim independently, a subject the guide to <a href=\"https:\/\/getbitcoin.guide\/articles\/crypto-wallet-open-source\/\">open source crypto wallets<\/a> goes into properly.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-did-the-august-dixence-update-fix-and-on-which-editions\">What did the August Dixence update fix, and on which editions?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">On 17 August 2026 BitBox published the <a href=\"https:\/\/blog.bitbox.swiss\/en\/bitbox-08-2026-dixence-update\/\" target=\"_blank\" rel=\"noopener\">Dixence update<\/a> and firmware 9.26.5, disclosing three security issues. The advisory says they were found during internal audits, including with what it calls frontier AI models, that there are no reports of stolen user funds, and that &#8220;Your existing wallet seed is not affected in any way&#8221;. <a href=\"https:\/\/bitcoinmagazine.com\/news\/bitbox-warns-users-about-vulnerability\" target=\"_blank\" rel=\"noopener\">Bitcoin Magazine covered it the next day<\/a>. This is the part no affiliate review carries, because a security notice sells nothing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The three issues, as the vendor describes them. A bootloader flaw that could have been used to walk an owner into installing malicious firmware on a genuine device, after a successful phishing step; it was fixed earlier, in the Oeschinen release, and the Nova was never affected because of the age of the bootloader versions involved. A memory corruption issue that applies only to a Multi edition with no wallet set up on it yet, plugged into a malicious host, where it could allow arbitrary code execution. And a silent payments flaw that could have locked coins to an unintended address, a ransom scenario rather than a theft. The affected ranges are specific, so here they are as the advisory states them, with the fixing release and its date from the <a href=\"https:\/\/github.com\/BitBoxSwiss\/bitbox02-firmware\/releases\" target=\"_blank\" rel=\"noopener\">public release record<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Issue<\/th><th>Who was affected<\/th><th>Fixed in<\/th><th>Release date<\/th><\/tr><\/thead><tbody><tr><td>Bootloader, malicious firmware install<\/td><td>BitBox02 on firmware through 9.26.1; Nova not affected<\/td><td>9.26.2, Oeschinen<\/td><td>8 July 2026<\/td><\/tr><tr><td>Memory corruption on a device not yet set up<\/td><td>Multi edition of BitBox02 and Nova through 9.26.4<\/td><td>9.26.5, Dixence<\/td><td>17 August 2026<\/td><\/tr><tr><td>Silent payments, coins locked to a wrong address<\/td><td>BitBox02 and Nova, 9.21.0 through 9.26.4<\/td><td>9.26.5, Dixence<\/td><td>17 August 2026<\/td><\/tr><tr><td>All three<\/td><td>Nothing from 9.26.5 onward, per the advisory<\/td><td>Latest is 9.27.1<\/td><td>31 August 2026<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Two footnotes worth having. BitBox credits external researcher Jan W\u00fctherich of <a href=\"https:\/\/www.syss.de\/\" target=\"_blank\" rel=\"noopener\">SySS GmbH<\/a> with independently reporting the bootloader issue after its own engineers had found it. Separately, the trade press credited a CertiK researcher with an out of bounds write in the USB path; the release notes for firmware 9.26.3, dated 8 July 2026, do record &#8220;Fixed potential out of bounds write&#8221;, but the Dixence advisory does not name CertiK, so treat that attribution as reported rather than vendor confirmed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"does-the-bitcoin-only-edition-really-have-less-attack-surfac\">Does the Bitcoin only edition really have less attack surface?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;Less code means less attack surface&#8221; is the kind of line that usually means nothing. In August 2026 it briefly meant something measurable. The memory corruption issue did not apply to the Bitcoin only edition, and the reason BitBox gives is refreshingly literal: &#8220;its firmware does not contain the affected code&#8221;. KeepKey is only now heading the same way, and its first Bitcoin only build is still a pre release, as <a href=\"https:\/\/getbitcoin.guide\/articles\/keepkey-wallet-review\/\">our check on whether KeepKey firmware is still maintained<\/a> sets out.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is one issue out of three, though, and the honest reading cuts both ways. A Bitcoin only BitBox02 was still inside the affected range for the bootloader issue and for the silent payments issue. Counting the three disclosures across the four products shows how the editions differ, and it is a crude count on purpose: an issue tally is not a severity ranking, and one bootloader flaw matters more than two that need a hostile computer and a device nobody has set up.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/man-writing-recovery-words-for-bitbox02.jpg\" alt=\"A man carefully writes recovery words while holding his bitbox02 hardware wallet.\" class=\"wp-image-443\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/man-writing-recovery-words-for-bitbox02.jpg 1376w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/man-writing-recovery-words-for-bitbox02-300x167.jpg 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/man-writing-recovery-words-for-bitbox02-1024x572.jpg 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/man-writing-recovery-words-for-bitbox02-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">Written recovery words are the fallback when a microSD backup card goes missing.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"900\" src=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/bitbox02-review-chart.png\" alt=\"Bar chart counting how many August 2026 issues each bitbox02 edition fell inside.\" class=\"wp-image-446\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/bitbox02-review-chart.png 1600w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/bitbox02-review-chart-300x169.png 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/bitbox02-review-chart-1024x576.png 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/bitbox02-review-chart-768x432.png 768w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/bitbox02-review-chart-1536x864.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-block-image__caption\">An issue count is not a severity ranking. The bootloader issue was the one needing only a phishing step.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-do-bitbox02-owners-actually-report\">What do BitBox02 owners actually report?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We read about thirty seven <a href=\"https:\/\/www.trustpilot.com\/review\/bitbox.swiss\" target=\"_blank\" rel=\"noopener\">Trustpilot reviews<\/a> of bitbox.swiss and one long thread on the public issue tracker, on 5 October 2026. The headline numbers: 4.8 out of 5 across 2,162 reviews, one star reviews at 2 per cent, two star reviews under 1 per cent. These are accounts of what people say happened to them, not findings, and most of the positive ones praise the support team rather than the device, which is what a solicited review pile tends to look like. Five of them, dated.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A two star reviewer in May 2024 reported the touch slider misreading their input badly enough to burn four of their ten password attempts. A one star reviewer in May 2023 described the touch edges as too sensitive to use, and another in October 2024 reported the touch interface malfunctioning.<\/li>\n\n<li>A one star reviewer in February 2025 reported a 69 dollar UPS brokerage fee landing after a 129 dollar purchase, taking the total to roughly 200 dollars. Another in December 2025 put theirs at about 250 dollars. Both were shipping into the Americas.<\/li>\n\n<li>A one star reviewer in July 2024 reported the device rejecting their password after they had lost the microSD card, and losing access as a result. That is the backup story every custody guide tells, arriving in the post.<\/li>\n\n<li>Reviewers in September 2026, rating four and five stars, still flagged entering a long passphrase on the device as the awkward part, alongside praise for the hardware and the support.<\/li>\n\n<li>On the BitBoxApp tracker, a contributor opened <a href=\"https:\/\/github.com\/BitBoxSwiss\/bitbox-wallet-app\/issues\/4053\" target=\"_blank\" rel=\"noopener\">issue 4053<\/a> on 24 April 2026 arguing that the app records the existence of passphrase protected wallets in its accounts file and its log, which undercuts a hidden wallet if the computer is later examined. Maintainers replied through 30 April that the app cannot currently tell a passphrase keystore apart without device side changes, that the upkeep would be permanent, that support staff rely on the logs, and that an incognito mode would be the cleaner fix. The issue is open and low priority.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Where the accounts agree with the documentation: the microSD backup is the single point of recovery, and the people who lose access are the people who lost the card. Where they add something it does not say: the touch slider is the part that goes wrong in the field, and on a device with a documented ten attempt limit a slider that misreads a gesture is a custody risk rather than an annoyance. Import duty is the other one, nobody\u2019s fault and real money all the same. If a long passphrase is part of the plan, the guide to <a href=\"https:\/\/getbitcoin.guide\/articles\/your-recovery-phrase\/\">what a recovery phrase is and how to store it<\/a> is worth reading first.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-does-the-bitbox02-compare-with-the-nova-and-the-alternat\">How does the BitBox02 compare with the Nova and the alternatives?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prices were read from the vendors\u2019 own stores on 5 October 2026. The chip and connectivity rows come from vendor datasheets and security pages, not from review sites.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Device<\/th><th>Secure chip<\/th><th>Connectivity<\/th><th>Editions<\/th><th>Listed price<\/th><\/tr><\/thead><tbody><tr><td>BitBox02<\/td><td>ATECC608B<\/td><td>USB-C only, no iPhone support<\/td><td>Multi or Bitcoin only<\/td><td>124.17 euros ex VAT<\/td><\/tr><tr><td>BitBox02 Nova<\/td><td>OPTIGA Trust M V3, EAL6+<\/td><td>USB-C plus optional BLE, works with iPhone<\/td><td>Multi or Bitcoin only<\/td><td>145.83 euros ex VAT<\/td><\/tr><tr><td>Trezor Safe 5<\/td><td>EAL6+ secure element<\/td><td>USB-C<\/td><td>One device, Bitcoin only firmware optional<\/td><td>See the <a href=\"https:\/\/getbitcoin.guide\/articles\/trezor-safe-5-review\/\">Trezor Safe 5 review<\/a><\/td><\/tr><tr><td>Blockstream Jade<\/td><td>No secure element, a blind oracle instead<\/td><td>USB-C and Bluetooth<\/td><td>One device<\/td><td>See the <a href=\"https:\/\/getbitcoin.guide\/articles\/blockstream-jade-review\/\">Jade review<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The Nova\u2019s Bluetooth deserves a sentence, because Bluetooth on a signing device sounds alarming. BitBox calls the implementation Whisper and describes it as a minimal trust architecture: end to end encrypted, running on a separate chip with no memory and no access to wallet secrets, and able to be disabled entirely. That is a vendor design claim rather than an audited finding, and the owner can switch it off. If the whole category is new, start with <a href=\"https:\/\/getbitcoin.guide\/articles\/what-is-a-cold-wallet\/\">what a cold wallet is<\/a>, and if an air gap matters more than convenience the <a href=\"https:\/\/getbitcoin.guide\/articles\/coldcard-q\/\">Coldcard Q<\/a> takes a different route again.<\/p>\n\n\n\n<div class=\"msq-tool msq-choose\" data-id=\"bitbox-edition-chooser\">\n<h3>Which BitBox02 does your situation point to?<\/h3>\n<p>This restates what BitBox publishes about its own four products. It is about hardware and connectivity only, it says nothing about what to hold or whether to buy anything, and nothing on this page will ever ask for your recovery words.<\/p>\n<label><input type=\"radio\" name=\"bitbox-edition-chooser\" value=\"iphone\">It has to work with an iPhone or iPad<\/label>\n<label><input type=\"radio\" name=\"bitbox-edition-chooser\" value=\"btconly\">Only bitcoin, nothing else, ever<\/label>\n<label><input type=\"radio\" name=\"bitbox-edition-chooser\" value=\"multi\">Several coins, or FIDO U2F login<\/label>\n<label><input type=\"radio\" name=\"bitbox-edition-chooser\" value=\"glass\">Durability and screen quality matter most<\/label>\n<label><input type=\"radio\" name=\"bitbox-edition-chooser\" value=\"price\">Lowest price from the vendor<\/label>\n<div class=\"msq-choice-result\" data-for=\"iphone\" hidden><strong>The Nova line.<\/strong> The vendor states that the original BitBox02 does not work on iPhone or iPad. The Nova connects over USB-C with the included Lightning adapter, or over its optional Bluetooth path, which can be switched off.<\/div>\n<div class=\"msq-choice-result\" data-for=\"btconly\" hidden><strong>A Bitcoin only edition, either line.<\/strong> BitBox describes it as removing support for other coins to cut complexity and attack surface. In August 2026 that was literal: the memory corruption issue did not apply, because the firmware does not carry the affected code.<\/div>\n<div class=\"msq-choice-result\" data-for=\"multi\" hidden><strong>A Multi edition.<\/strong> It adds Ethereum and ERC20 tokens, Cardano, Litecoin, what the shop calls 1500 or more further tokens, and FIDO U2F. It was also the edition inside all three August 2026 disclosures, so keep the firmware current.<\/div>\n<div class=\"msq-choice-result\" data-for=\"glass\" hidden><strong>The Nova.<\/strong> Its datasheet lists a 128 by 64 pixel OLED under a glass top and an OPTIGA Trust M V3 secure chip, against the ATECC608B in the original BitBox02.<\/div>\n<div class=\"msq-choice-result\" data-for=\"price\" hidden><strong>The original BitBox02.<\/strong> Listed at 124.17 euros excluding VAT on 5 October 2026, against 145.83 euros for the Nova. Both carry a two year warranty, and import duty can add a lot on top outside the EU.<\/div>\n<p class=\"msq-note\">Information only, not financial advice, and not a recommendation to buy anything. Remember the editions cannot be converted after purchase.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-does-the-bitbox02-security-page-leave-unanswered\">What does the BitBox02 security page leave unanswered?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For a page this detailed, the audit line is remarkably thin. In full, it says the BitBox02 firmware &#8220;was audited by <a href=\"https:\/\/census-labs.com\/\" target=\"_blank\" rel=\"noopener\">Census Labs<\/a> along with consulting done by multiple third-party security firms&#8221;. No date, no scope, no published report to read, and we could not find one. Every ranking page repeats &#8220;independently audited&#8221; without noticing that the claim, as written, cannot be checked by a reader. The same trick runs through certification badges, which is why we went looking for <a href=\"https:\/\/getbitcoin.guide\/articles\/ngrave-zero-review\/\">the document behind the NGRAVE ZERO EAL7 claim<\/a> and found it covers an operating system rather than a wallet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The second gap is where disclosures live. Checked on 5 October 2026, the firmware repository has <a href=\"https:\/\/github.com\/BitBoxSwiss\/bitbox02-firmware\/security\/advisories\" target=\"_blank\" rel=\"noopener\">no published GitHub security advisories<\/a>, so there is no CVE feed to subscribe to and no notification unless you read the blog or run the app that prompts you. BitBox also wrote that it &#8220;may share more technical information in a writeup at a later time&#8221;, which had not appeared when we checked. Set against the <a href=\"https:\/\/bitbox.swiss\/bitbox02\/threat-model\/\" target=\"_blank\" rel=\"noopener\">published threat model<\/a>, the schematics, the x-rays and the named chips, those are small gaps. They are still the two a careful owner would want closed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The practical conclusion is the boring one, and it holds for every brand covered here: the firmware version on the device is the security feature. BitBox says it will never ask for the recovery words, and nothing legitimate ever will, so an update prompt arriving by email rather than inside the app is a phishing attempt and not a favour.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"frequently-asked-questions\">Frequently asked questions<\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-q-1\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Which BitBox02 firmware version fixes the August 2026 vulnerabilities?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Firmware 9.26.5, released as the Dixence update on 17 August 2026. The advisory states that no BitBox device on 9.26.5 or later is affected by any of the three issues, and the most recent release at the time of writing is 9.27.1, published on 31 August 2026.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Can a Multi edition BitBox02 be converted into a Bitcoin only edition?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. The shop pages state that the editions are two different products that cannot be converted later, and the bootloader refuses firmware built for the other edition. The decision is made at purchase.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-3\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Does the BitBox02 work with an iPhone?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>The original BitBox02 does not, and the vendor says so on the product page. The BitBox02 Nova does, over USB-C with the included Lightning adapter or over its optional Bluetooth Low Energy path.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-4\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Is the Nova Bluetooth connection a weakness?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>BitBox describes its Whisper architecture as end to end encrypted, running on a separate chip with no memory and no access to wallet secrets, and says Bluetooth can be disabled completely. That is the vendor design claim rather than a published audit result, and owners who do not need it can switch it off.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-5\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">What happens if the device password is forgotten?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>The security page names a ten attempt limit imposed by the microcontroller, backed by a monotonic counter in the secure chip, and does not spell out the behaviour on the final attempt. Treat the microSD backup or the written recovery words as the only route back into the wallet.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-6\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">How is a BitBox02 checked for tampering before it is used?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Each device is loaded with a secret attestation key at the factory, so the BitBoxApp can verify authenticity on every connection. The casing pins break if the halves are separated, and the bootloader can display the firmware hash before running it.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n<div class=\"msq-end\" id=\"ms-quiz-end\">\n<p><strong>Finished the page?<\/strong> The same five questions from the top, to see what stuck.<\/p>\n<button type=\"button\" class=\"msq-btn msq-start-test\">Test Your Understanding of This Article<\/button>\n<div class=\"msq-mount\"><\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>This article is educational and is not financial advice. Nothing here is a recommendation to buy, sell or hold anything. You are responsible for your own security decisions.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>What the BitBox02 dual chip design protects, what the Dixence firmware update fixed on which editions, and what owners report about touch sliders, import fees and app logs.<\/p>\n","protected":false},"author":1,"featured_media":441,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","rank_math_title":"BitBox02 Review: Two Chips, Two Editions, Three Fixes","rank_math_description":"The BitBox02 pairs a microcontroller with a secure chip in two editions. Here is what the Dixence firmware update fixed, and which edition escaped it.","rank_math_focus_keyword":"bitbox02","rank_math_canonical_url":"","rank_math_breadcrumb_title":"","rank_math_facebook_title":"","rank_math_facebook_description":"","rank_math_facebook_image":"","rank_math_twitter_title":"","rank_math_twitter_description":"","rank_math_twitter_image":"","rank_math_pillar_content":"","rank_math_robots":[],"rank_math_advanced_robots":[]},"categories":[2],"tags":[],"class_list":["post-444","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wallets"],"_links":{"self":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/444","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/comments?post=444"}],"version-history":[{"count":5,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/444\/revisions"}],"predecessor-version":[{"id":643,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/444\/revisions\/643"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/media\/441"}],"wp:attachment":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/media?parent=444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/categories?post=444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/tags?post=444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}