{"id":731,"date":"2026-10-25T09:24:59","date_gmt":"2026-10-25T09:24:59","guid":{"rendered":"https:\/\/getbitcoin.guide\/articles\/?p=731"},"modified":"2026-10-25T09:30:00","modified_gmt":"2026-10-25T09:30:00","slug":"secux-v20-review","status":"publish","type":"post","link":"https:\/\/getbitcoin.guide\/articles\/secux-v20-review\/","title":{"rendered":"SecuX V20 Review: Bluetooth, the App and a Hacked Banner"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>The SecuX V20 is a Bluetooth hardware wallet that, by SecuX\u2019s own account, keeps the private key inside an Infineon secure element and sends only transaction data over an AES encrypted radio link. The documented trouble has not been the radio. On 19 October 2026 SecuX confirmed hackers had altered a banner in its phone app.<\/strong><\/p>\n\n\n\n<div class=\"msq-audio\" data-article=\"secux-v20-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\/secux-v20-review\/#audio\",\"name\":\"SecuX V20 Review: Bluetooth, the App and a Hacked Banner, read aloud\",\"description\":\"Synthetic voice reading of the article, recorded 25 October 2026.\",\"contentUrl\":\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/secux-v20-review-audio-202610251459.mp3\",\"encodingFormat\":\"audio\/mpeg\",\"duration\":\"PT12M50S\",\"uploadDate\":\"2026-10-25\",\"inLanguage\":\"en-GB\",\"isAccessibleForFree\":true,\"mainEntityOfPage\":\"https:\/\/getbitcoin.guide\/articles\/secux-v20-review\/\",\"hasPart\":[{\"@type\":\"Clip\",\"name\":\"SecuX V20 Review: Bluetooth, the App and a Hacked Banner\",\"startOffset\":0,\"endOffset\":63},{\"@type\":\"Clip\",\"name\":\"What is the SecuX V20 and what is inside it?\",\"startOffset\":63,\"endOffset\":209,\"url\":\"https:\/\/getbitcoin.guide\/articles\/secux-v20-review\/#what-is-the-secux-v20-and-what-is-inside-it\"},{\"@type\":\"Clip\",\"name\":\"What actually passes over the SecuX V20 Bluetooth link?\",\"startOffset\":209,\"endOffset\":355,\"url\":\"https:\/\/getbitcoin.guide\/articles\/secux-v20-review\/#what-actually-passes-over-the-secux-v20-bluetooth-link\"},{\"@type\":\"Clip\",\"name\":\"What happened to the SecuX app in October 2026?\",\"startOffset\":355,\"endOffset\":455,\"url\":\"https:\/\/getbitcoin.guide\/articles\/secux-v20-review\/#what-happened-to-the-secux-app-in-october-2026\"},{\"@type\":\"Clip\",\"name\":\"What do SecuX V20 owners report about the app and the device?\",\"startOffset\":455,\"endOffset\":582,\"url\":\"https:\/\/getbitcoin.guide\/articles\/secux-v20-review\/#what-do-secux-v20-owners-report-about-the-app-and-the-device\"},{\"@type\":\"Clip\",\"name\":\"How does the SecuX V20 compare with the other Bluetooth wallets?\",\"startOffset\":582,\"endOffset\":711,\"url\":\"https:\/\/getbitcoin.guide\/articles\/secux-v20-review\/#how-does-the-secux-v20-compare-with-the-other-bluetooth-wall\"},{\"@type\":\"Clip\",\"name\":\"How do you keep a SecuX V20 safe day to day?\",\"startOffset\":711,\"endOffset\":770,\"url\":\"https:\/\/getbitcoin.guide\/articles\/secux-v20-review\/#how-do-you-keep-a-secux-v20-safe-day-to-day\"}],\"contentSize\":\"5.4 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\/secux-v20-review-audio-202610251459.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: SecuX V20 Review: Bluetooth, the App and a Hacked Banner\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:00<\/span><a href=\"#top\">SecuX V20 Review: Bluetooth, the App and a Hacked Banner<\/a><\/li>\n<li data-start=\"62.54\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"62.54\" aria-label=\"Play from: What is the SecuX V20 and what is inside it?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">1:03<\/span><a href=\"#what-is-the-secux-v20-and-what-is-inside-it\">What is the SecuX V20 and what is inside it?<\/a><\/li>\n<li data-start=\"209.12\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"209.12\" aria-label=\"Play from: What actually passes over the SecuX V20 Bluetooth link?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">3:29<\/span><a href=\"#what-actually-passes-over-the-secux-v20-bluetooth-link\">What actually passes over the SecuX V20 Bluetooth link?<\/a><\/li>\n<li data-start=\"354.74\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"354.74\" aria-label=\"Play from: What happened to the SecuX app in October 2026?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">5:55<\/span><a href=\"#what-happened-to-the-secux-app-in-october-2026\">What happened to the SecuX app in October 2026?<\/a><\/li>\n<li data-start=\"455.16\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"455.16\" aria-label=\"Play from: What do SecuX V20 owners report about the app and the device?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">7:35<\/span><a href=\"#what-do-secux-v20-owners-report-about-the-app-and-the-device\">What do SecuX V20 owners report about the app and the device?<\/a><\/li>\n<li data-start=\"581.86\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"581.86\" aria-label=\"Play from: How does the SecuX V20 compare with the other Bluetooth wallets?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">9:42<\/span><a href=\"#how-does-the-secux-v20-compare-with-the-other-bluetooth-wall\">How does the SecuX V20 compare with the other Bluetooth wallets?<\/a><\/li>\n<li data-start=\"711.12\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"711.12\" aria-label=\"Play from: How do you keep a SecuX V20 safe day to day?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">11:51<\/span><a href=\"#how-do-you-keep-a-secux-v20-safe-day-to-day\">How do you keep a SecuX V20 safe day to day?<\/a><\/li>\n<\/ol><\/nav>\n<p class=\"msq-audio-note\">Recorded 25 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\",\"secuxv20reviewbluetootht\",45],[5.08,\"p\",\"thesecuxv20isabluetoothh\",160],[19.04,\"p\",\"thedocumentedtroublehasn\",38],[22.04,\"p\",\"on19october2026secuxconf\",66],[28.56,\"p\",\"onthispagethev20partslis\",215],[46.36,\"p\",\"everypagerankingforthisd\",65],[50.16,\"p\",\"noneanswerswhattheradioc\",39],[53.16,\"p\",\"thisonedoesfromsecuxsown\",106],[62.54,\"h\",\"whatisthesecuxv20andwhat\",34],[66.02,\"p\",\"thev20issecuxsroundtouch\",58],[71.94,\"p\",\"nordicsemiconductorsanno\",198],[90.86,\"p\",\"italsoconnectsbyusb\",19],[93.26,\"p\",\"thekeyslivesomewhereelse\",24],[95.26,\"p\",\"thesecuxshoplistingnames\",130],[108.5,\"p\",\"on25october2026thev20xse\",79],[120.98,\"p\",\"twoseparatechipsmatterhe\",75],[127.14,\"t\",\"secureelement\",83],[139.06,\"t\",\"radiochip\",78],[151.22,\"t\",\"radioencryption\",95],[161.94,\"t\",\"screenandbattery\",103],[175.66,\"t\",\"wrongpinlimit\",88],[184.9,\"t\",\"recoverywords\",79],[194.34,\"p\",\"afterthatfactoryresetsec\",113],[204.26,\"p\",\"thedeviceisonlyeveracopy\",24],[206.18,\"p\",\"thewrittenphraseisthewal\",27],[209.12,\"h\",\"whatactuallypassesoverth\",46],[212.96,\"p\",\"hereisthehonestversionof\",74],[218.4,\"p\",\"thephoneappbuildsatransa\",69],[223.12,\"p\",\"thev20showsthedetailsoni\",35],[226.28,\"p\",\"youapproveonthedevice\",21],[228.2,\"p\",\"thesecureelementsignsand\",84],[234.68,\"p\",\"thesecuxsecurityfaqupdat\",109],[244.56,\"p\",\"twoprotectionssitontheli\",145],[256.24,\"p\",\"nordics2019announcementa\",106],[269.44,\"p\",\"whatneithersourcepublish\",124],[279.36,\"p\",\"thatisagapanditisworthna\",51],[282.84,\"t\",\"theunsignedtransactionyo\",89],[290.08,\"t\",\"thesignedtransactioncomi\",69],[297.24,\"t\",\"addressesandbalancesshow\",71],[304.48,\"t\",\"theprivatekey\",49],[310.24,\"t\",\"thepin\",52],[316.28,\"t\",\"therecoveryphrase\",79],[323.28,\"p\",\"noticewheretheriskactual\",42],[326.6,\"p\",\"someonelisteningtotherad\",116],[334.08,\"p\",\"someonewhotamperswiththe\",117],[342.08,\"p\",\"thepartofthesystemthatca\",60],[346.08,\"p\",\"whichbringsustooctober\",22],[347.92,\"p\",\"readtheaddressonthedevic\",56],[351.92,\"p\",\"theappscreenisnotthechec\",25],[354.74,\"h\",\"whathappenedtothesecuxap\",38],[358.62,\"p\",\"on16october2026secuxtold\",170],[374.78,\"p\",\"thateveningripplesdavids\",129],[384.46,\"p\",\"panewsalsoreporteduserss\",64],[389.66,\"p\",\"thensecuxsaidwhathadhapp\",34],[393.22,\"p\",\"itssecurityalertof19octo\",212],[409.38,\"p\",\"thealertnamesnofakedomai\",65],[414.34,\"p\",\"secuxsinstructionforanyo\",177],[428.46,\"p\",\"thealertalsosayssecuxwil\",108],[436.46,\"p\",\"nofirmwareadvisoryforthe\",37],[439.62,\"p\",\"thenewestv20firmwarenote\",118],[451.66,\"p\",\"nolaterv20changelogcould\",31],[455.16,\"h\",\"whatdosecuxv20ownersrepo\",49],[459.32,\"p\",\"theaccountsarethinandlop\",55],[463.96,\"p\",\"fourteenwerereadacrossth\",36],[466.72,\"p\",\"thepatternisconsistentpe\",75],[472.08,\"p\",\"appstoresecuxwalletrated\",68],[481.24,\"p\",\"ofthetennewestreviewsnin\",38],[484.6,\"p\",\"ajuly2025reviewerreports\",91],[491.68,\"p\",\"anoctober2025reviewerdes\",75],[497.4,\"p\",\"adecember2025reviewersay\",68],[502.68,\"p\",\"theonepositivereviewdate\",71],[508.84,\"p\",\"trustpilotsecuxtechcompr\",74],[516.6,\"p\",\"theonlyoneaboutusingadev\",110],[524.8,\"p\",\"severaloftheonestarrevie\",105],[532.64,\"p\",\"bitcointalkathreadasking\",200],[547.72,\"p\",\"otherslikedthetouchscree\",25],[549.88,\"p\",\"awordonthoserecoveryserv\",49],[554.24,\"p\",\"aservicepromisingtogetst\",97],[560.72,\"p\",\"nobodycanreverseaconfirm\",44],[564.2,\"p\",\"wheretheaccountsagreewit\",105],[572.16,\"p\",\"wheretheydonotthereviewe\",61],[576.2,\"p\",\"thesearereportsnotfailur\",56],[581.86,\"h\",\"howdoesthesecuxv20compar\",53],[585.86,\"p\",\"thissitehaswrittenaboutt\",136],[595.7,\"p\",\"setsidebysidethethreetel\",64],[600.38,\"t\",\"keyheldin\",147],[618.74,\"t\",\"radio\",81],[632.18,\"t\",\"approveonthedevice\",94],[642.42,\"t\",\"mostrecentdocumentedinci\",176],[660.98,\"t\",\"wastheradiothecause\",111],[675.3,\"p\",\"threebluetoothwalletsthr\",61],[679.46,\"p\",\"thatdoesnotprovetheradio\",57],[683.98,\"p\",\"itdoessaywheretospendyou\",30],[686.3,\"p\",\"theaffiliatereviewsspend\",122],[694.98,\"p\",\"iftheradiostillbothersyo\",215],[711.12,\"h\",\"howdoyoukeepasecuxv20saf\",33],[714.64,\"p\",\"treatthev20screenastheon\",49],[718.44,\"p\",\"checktheamountandthefull\",36],[720.6,\"p\",\"nevertypetherecoveryphra\",63],[725.72,\"p\",\"secuxsownalertsaysitwill\",44],[729.16,\"p\",\"ignorebannersnotificatio\",58],[733.08,\"p\",\"closetheappandopensecuxs\",54],[737.52,\"p\",\"keepthephrasewrittendown\",75],[743.2,\"p\",\"ifyouusethehiddenwalletf\",116],[751.44,\"p\",\"andontheclosedsourceques\",94],[760.04,\"p\",\"whetherthatmatterstoyoui\",133]];\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 V20 parts list from SecuX and Nordic with a source on every row, what crosses the Bluetooth link and what never does, SecuX&#8217;s own 19 October 2026 alert on the hacked app banner, fourteen owner accounts, and the V20 set beside the Ledger Nano X and D&#8217;CENT.<\/p>\n\n\n\n<div class=\"msq\" id=\"ms-quiz\" data-slug=\"secux-v20-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=\"What is the SecuX V20 and what is inside it?\" data-section=\"#what-is-the-secux-v20-and-what-is-inside-it\">\n<p class=\"msq-question\">1. According to SecuX&#8217;s device FAQ, what happens after five wrong PIN entries on the V20?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 1 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">The device locks for 24 hours<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">The device resets itself to factory settings<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">SecuX support can unlock it remotely<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The <a href=\"https:\/\/secuxtech.com\/community\/how-it-works\/faqs\/wallet-and-device-issues\" target=\"_blank\" rel=\"noopener\">SecuX device FAQ<\/a> says five incorrect PIN entries reset the device to factory settings, and the recovery words are the way back. <a class=\"msq-section\" href=\"#what-is-the-secux-v20-and-what-is-inside-it\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"2\" data-answer=\"b\" data-title=\"What actually passes over the SecuX V20 Bluetooth link?\" data-section=\"#what-actually-passes-over-the-secux-v20-bluetooth-link\">\n<p class=\"msq-question\">2. What does SecuX say about the private key during a Bluetooth transaction?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 2 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">It is sent encrypted to the phone app for signing<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">It never leaves the device, and transactions are verified inside it<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">It is backed up to SecuX servers over the link<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The <a href=\"https:\/\/secuxtech.com\/community\/how-it-works\/faqs\/security-questions\" target=\"_blank\" rel=\"noopener\">SecuX security FAQ<\/a> says transactions are verified without the private key ever leaving the device, over a link with AES encryption and a one time password. <a class=\"msq-section\" href=\"#what-actually-passes-over-the-secux-v20-bluetooth-link\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"3\" data-answer=\"b\" data-title=\"What happened to the SecuX app in October 2026?\" data-section=\"#what-happened-to-the-secux-app-in-october-2026\">\n<p class=\"msq-question\">3. What did SecuX&#8217;s alert of 19 October 2026 say hackers had changed?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 3 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">The V20 firmware<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">The banner in the SecuX App, to link to fake SecuX websites<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">The Bluetooth pairing code<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>SecuX&#8217;s <a href=\"https:\/\/secuxtech.com\/blogs\/blog\/security-alert-beware-of-fake-secux-websites\" target=\"_blank\" rel=\"noopener\">security alert of 19 October 2026<\/a> states hackers modified the banner in the SecuX App to link to fraudulent websites impersonating SecuX. <a class=\"msq-section\" href=\"#what-happened-to-the-secux-app-in-october-2026\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"4\" data-answer=\"a\" data-title=\"What do SecuX V20 owners report about the app and the device?\" data-section=\"#what-do-secux-v20-owners-report-about-the-app-and-the-device\">\n<p class=\"msq-question\">4. What was the SecuX Wallet rating on the App Store when read on 25 October 2026?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 4 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">1.9 out of 5 from 31 ratings<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">4.6 out of 5 from 3,100 ratings<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">3.1 out of 5 from 7 ratings<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The <a href=\"https:\/\/apps.apple.com\/us\/app\/secux-wallet\/id1628469822\" target=\"_blank\" rel=\"noopener\">SecuX Wallet App Store page<\/a> showed 1.9 out of 5 from 31 ratings; 3.1 from 7 reviews was the Trustpilot profile. <a class=\"msq-section\" href=\"#what-do-secux-v20-owners-report-about-the-app-and-the-device\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"5\" data-answer=\"b\" data-title=\"How does the SecuX V20 compare with the other Bluetooth wallets?\" data-section=\"#how-does-the-secux-v20-compare-with-the-other-bluetooth-wall\">\n<p class=\"msq-question\">5. Across the SecuX V20, Ledger Nano X and D&#8217;CENT incidents covered on this page, what was the cause in each case?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 5 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">An attack over Bluetooth<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Something other than the Bluetooth radio: an app or a customer database<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">A secure element chip being cracked<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>SecuX&#8217;s <a href=\"https:\/\/secuxtech.com\/blogs\/blog\/security-alert-beware-of-fake-secux-websites\" target=\"_blank\" rel=\"noopener\">alert<\/a> describes a hacked app banner; the Ledger case was a customer database and the D&#8217;CENT case its App Wallet. None came through the radio. <a class=\"msq-section\" href=\"#how-does-the-secux-v20-compare-with-the-other-bluetooth-wall\">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<p class=\"wp-block-paragraph\">Every page ranking for this device is a shop or a glossary summarising the shop. None answers what the radio can actually reach. This one does, from SecuX\u2019s own documentation checked on 25 October 2026, and then covers the week the phone app became the problem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-is-the-secux-v20-and-what-is-inside-it\">What is the SecuX V20 and what is inside it?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The V20 is SecuX\u2019s round, touchscreen hardware wallet, launched in 2019. <a href=\"https:\/\/www.nordicsemi.com\/Nordic-news\/2019\/04\/SecuX-V20-wallet-use-nRF52840-to-provide-secure-wireless-connectivity-for-crypto-asset-transaction\" target=\"_blank\" rel=\"noopener\">Nordic Semiconductor\u2019s announcement of 25 April 2019<\/a> says SecuX chose its nRF52840 chip for the Bluetooth LE connection, and describes a 2.8 inch colour touchscreen and a 600mAh battery giving \u201cup to seven hours operation between recharge\u201d. It also connects by USB.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The keys live somewhere else. The <a href=\"https:\/\/secuxtech.com\/products\/secux-v20-xseed\" target=\"_blank\" rel=\"noopener\">SecuX shop listing<\/a> names the secure element as an \u201cInfineon SLE Solid Flash CC EAL 5+\u201d chip and the wireless connection as Bluetooth 5.0, backward compatible. On 25 October 2026 the V20 XSEED bundle on that page was listed at USD 168, marked down from USD 178. Two separate chips matter here: the Nordic one runs the radio, the Infineon one holds the key.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Part<\/th><th>What SecuX or Nordic says<\/th><th>Source<\/th><\/tr><\/thead><tbody><tr><td>Secure element<\/td><td>Infineon SLE Solid Flash, CC EAL5+<\/td><td><a href=\"https:\/\/secuxtech.com\/products\/secux-v20-xseed\" target=\"_blank\" rel=\"noopener\">SecuX shop listing<\/a><\/td><\/tr><tr><td>Radio chip<\/td><td>Nordic nRF52840, Bluetooth LE<\/td><td><a href=\"https:\/\/www.nordicsemi.com\/Nordic-news\/2019\/04\/SecuX-V20-wallet-use-nRF52840-to-provide-secure-wireless-connectivity-for-crypto-asset-transaction\" target=\"_blank\" rel=\"noopener\">Nordic, 25 April 2019<\/a><\/td><\/tr><tr><td>Radio encryption<\/td><td>AES, plus a one time password when connecting<\/td><td><a href=\"https:\/\/secuxtech.com\/community\/how-it-works\/faqs\/security-questions\" target=\"_blank\" rel=\"noopener\">SecuX security FAQ<\/a><\/td><\/tr><tr><td>Screen and battery<\/td><td>2.8 inch colour touchscreen, 600mAh, up to seven hours<\/td><td><a href=\"https:\/\/www.nordicsemi.com\/Nordic-news\/2019\/04\/SecuX-V20-wallet-use-nRF52840-to-provide-secure-wireless-connectivity-for-crypto-asset-transaction\" target=\"_blank\" rel=\"noopener\">Nordic, 25 April 2019<\/a><\/td><\/tr><tr><td>Wrong PIN limit<\/td><td>Factory reset after 5 incorrect entries<\/td><td><a href=\"https:\/\/secuxtech.com\/community\/how-it-works\/faqs\/wallet-and-device-issues\" target=\"_blank\" rel=\"noopener\">SecuX device FAQ<\/a><\/td><\/tr><tr><td>Recovery words<\/td><td>12, 18 or 24 word BIP39 phrase<\/td><td><a href=\"https:\/\/secuxtech.com\/products\/secux-v20-xseed\" target=\"_blank\" rel=\"noopener\">SecuX shop listing<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">After that factory reset, <a href=\"https:\/\/secuxtech.com\/community\/how-it-works\/faqs\/wallet-and-device-issues\" target=\"_blank\" rel=\"noopener\">SecuX\u2019s device FAQ<\/a> says the way back is to recover an existing wallet by entering your 24 recovery words in order. The device is only ever a copy. The written phrase is the wallet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-actually-passes-over-the-secux-v20-bluetooth-link\">What actually passes over the SecuX V20 Bluetooth link?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here is the honest version of how a Bluetooth signing device works, stated in SecuX\u2019s terms. The phone app builds a transaction and sends the unsigned request across the radio. The V20 shows the details on its own screen. You approve on the device. The secure element signs, and the signed transaction goes back over the radio for the app to broadcast. The <a href=\"https:\/\/secuxtech.com\/community\/how-it-works\/faqs\/security-questions\" target=\"_blank\" rel=\"noopener\">SecuX security FAQ, updated on 17 February 2024<\/a>, says transactions are verified \u201cwithout the private key ever leaving the device\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Two protections sit on the link itself, again per that FAQ: Bluetooth 5 AES encryption over the data in transit, and a one time password whenever a wallet connects over Bluetooth. Nordic\u2019s 2019 announcement adds that the nRF52840 carries an Arm CryptoCell 310 module and an AES 128 bit hardware accelerator. What neither source publishes is the pairing protocol in detail, and no independent audit of the V20 Bluetooth stack could be found on 25 October 2026. That is a gap, and it is worth naming rather than smoothing over.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Item<\/th><th>Crosses the radio?<\/th><th>Why<\/th><\/tr><\/thead><tbody><tr><td>The unsigned transaction you are asked to approve<\/td><td>Yes<\/td><td>It is how a signing device works<\/td><\/tr><tr><td>The signed transaction coming back<\/td><td>Yes<\/td><td>The app broadcasts it<\/td><\/tr><tr><td>Addresses and balances shown in the app<\/td><td>Yes<\/td><td>Public information<\/td><\/tr><tr><td>The private key<\/td><td>No<\/td><td><a href=\"https:\/\/secuxtech.com\/community\/how-it-works\/faqs\/security-questions\" target=\"_blank\" rel=\"noopener\">SecuX security FAQ<\/a><\/td><\/tr><tr><td>The PIN<\/td><td>No<\/td><td>Entered on the V20 touchscreen<\/td><\/tr><tr><td>The recovery phrase<\/td><td>No, unless you type it into something<\/td><td>It lives on paper<\/td><\/tr><\/tbody><\/table><\/figure>\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\/pairing-secux-v20-bluetooth-wallet-to-phone.jpg\" alt=\"A close up of a hand pairing a secux v20 wireless wallet with a phone.\" class=\"wp-image-729\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/pairing-secux-v20-bluetooth-wallet-to-phone.jpg 1376w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/pairing-secux-v20-bluetooth-wallet-to-phone-300x167.jpg 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/pairing-secux-v20-bluetooth-wallet-to-phone-1024x572.jpg 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/pairing-secux-v20-bluetooth-wallet-to-phone-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">Wireless data transmission requires physical confirmation on the secure device.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Notice where the risk actually lives in that table. Someone listening to the radio gets, at worst, encrypted transaction data that is going to be public on the blockchain within minutes anyway. Someone who tampers with the request still has to get past your eyes on the V20 screen, which is the entire point of a device with its own display. The part of the system that can show you anything it likes is the phone app. Which brings us to October.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Read the address on the device screen before you approve, every time. The app screen is not the check.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-happened-to-the-secux-app-in-october-2026\">What happened to the SecuX app in October 2026?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">On 16 October 2026 SecuX told users its app was undergoing a major system upgrade and emergency maintenance, and later the same day said services had returned to normal, as <a href=\"https:\/\/panews.io\/articles\/01a14a26-36cb-70a1-89e9-0011defb024c\" target=\"_blank\" rel=\"noopener\">PANews reported on 17 October 2026<\/a>. That evening Ripple\u2019s <a href=\"https:\/\/panews.io\/articles\/01a14a26-36cb-70a1-89e9-0011defb024c\" target=\"_blank\" rel=\"noopener\">David Schwartz<\/a> said the SecuX Android app had pushed him a notification linking to a page that asked for a 12 or 24 word recovery phrase. PANews also reported users still unable to reach their wallets on 17 October.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then SecuX said what had happened, in part. Its <a href=\"https:\/\/secuxtech.com\/blogs\/blog\/security-alert-beware-of-fake-secux-websites\" target=\"_blank\" rel=\"noopener\">security alert of 19 October 2026<\/a> states that hackers modified the banner in the SecuX App to link to fraudulent websites impersonating SecuX, which claimed wallets faced \u201ccritical security vulnerabilities\u201d or needed \u201cimmediate wallet verification\u201d. The alert names no fake domains and does not explain how the banner was changed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SecuX\u2019s instruction for anyone who entered a phrase on one of those pages is to treat the wallet as compromised, stop using that recovery phrase, and move the assets to a newly created wallet with a new recovery phrase. The alert also says SecuX will never ask for the phrase, including for wallet verification, security updates or firmware upgrades.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No firmware advisory for the V20 came with it. The newest V20 firmware note on SecuX\u2019s announcements page on 25 October 2026 was the <a href=\"https:\/\/secuxtech.com\/blogs\/product-updates\/secux-new-se-firmware-upgrading-v20-w20-and-w10-crypto-hardware-wallets-to-support-stellar-lumens-xlm-for-migrant-workers-for-cross-border-payments\" target=\"_blank\" rel=\"noopener\">March 2024 post on SE firmware 1.83<\/a>, adding Stellar support. No later V20 changelog could be found.<\/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\/secux-v20-user-checking-app-security.jpg\" alt=\"A concerned woman checks her phone beside her secux v20 key recovery backup.\" class=\"wp-image-730\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/secux-v20-user-checking-app-security.jpg 1376w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/secux-v20-user-checking-app-security-300x167.jpg 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/secux-v20-user-checking-app-security-1024x572.jpg 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/secux-v20-user-checking-app-security-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">A banner inside an app is not the device screen, and only the device screen is the check.<\/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\/secux-v20-review-chart.png\" alt=\"Timeline of secux v20 events from the 2019 launch to the October 2026 hacked app banner alert\" class=\"wp-image-733\" srcset=\"https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/secux-v20-review-chart.png 1600w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/secux-v20-review-chart-300x169.png 300w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/secux-v20-review-chart-1024x576.png 1024w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/secux-v20-review-chart-768x432.png 768w, https:\/\/getbitcoin.guide\/articles\/wp-content\/uploads\/2026\/10\/secux-v20-review-chart-1536x864.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-block-image__caption\">From Nordic&#8217;s 25 April 2019 announcement, SecuX&#8217;s March 2024 firmware post and 19 October 2026 alert, and PANews on 17 October 2026.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-do-secux-v20-owners-report-about-the-app-and-the-device\">What do SecuX V20 owners report about the app and the device?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The accounts are thin and lopsided, and that is itself information. Fourteen were read across three platforms. The pattern is consistent: people complain about the software and rarely about the device.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>App Store, <a href=\"https:\/\/apps.apple.com\/us\/app\/secux-wallet\/id1628469822\" target=\"_blank\" rel=\"noopener\">SecuX Wallet<\/a>: rated 1.9 out of 5 from 31 ratings when read on 25 October 2026. Of the ten newest reviews, nine are complaints. A July 2025 reviewer reports the app freezing and closing after the hardware wallet confirmed a transaction. An October 2025 reviewer describes the app stuck on the splash screen through reinstalls. A December 2025 reviewer says the device is good but the app will not open reliably. The one positive review, dated 14 January with no year shown, reports no problems at all.<\/li>\n\n<li>Trustpilot, <a href=\"https:\/\/www.trustpilot.com\/review\/secuxtech.com\" target=\"_blank\" rel=\"noopener\">secuxtech.com profile<\/a>: seven reviews, 3.1 out of 5, none in the last twelve months. The only one about using a device, from September 2024 and not naming the model, found operation awkward and the battery quick to drain. Several of the one star reviews from 2021 and 2022 read as adverts for fund recovery services rather than accounts of a product.<\/li>\n\n<li>Bitcointalk, <a href=\"https:\/\/bitcointalk.org\/index.php?topic=5381316.0\" target=\"_blank\" rel=\"noopener\">a thread asking whether anyone had tried a SecuX wallet<\/a>, from 2022: experienced posters objected that the code cannot be verified and that you are tied to SecuX\u2019s own software, and one disliked Bluetooth and batteries on principle. Others liked the touchscreen.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A word on those recovery service reviews, without the jokes. A service promising to get stolen crypto back for a fee is a common second scam aimed at people who have just lost money. Nobody can reverse a confirmed bitcoin transaction.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Where the accounts agree with SecuX\u2019s documentation: nobody reports a key extracted over the radio or a secure element failing. Where they do not: the reviewers describe an app they cannot rely on to open. These are reports, not failure rates, and 31 ratings is a small sample.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-does-the-secux-v20-compare-with-the-other-bluetooth-wall\">How does the SecuX V20 compare with the other Bluetooth wallets?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This site has written about two other Bluetooth wallets, the <a href=\"https:\/\/getbitcoin.guide\/articles\/ledger-nano-x-review\/\">Ledger Nano X and what its Bluetooth changes<\/a> and the <a href=\"https:\/\/getbitcoin.guide\/articles\/dcent-biometric-wallet\/\">D\u2019CENT Biometric wallet and its App Wallet incident<\/a>. Set side by side, the three tell the same story about where the trouble has been.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th><\/th><th>SecuX V20<\/th><th>Ledger Nano X<\/th><th>D\u2019CENT Biometric<\/th><\/tr><\/thead><tbody><tr><td>Key held in<\/td><td>Infineon secure element, per SecuX<\/td><td>Secure element, per <a href=\"https:\/\/getbitcoin.guide\/articles\/ledger-nano-x-review\/\">our Nano X review<\/a><\/td><td>ST33 secure element, EAL5+, per D\u2019CENT, via <a href=\"https:\/\/getbitcoin.guide\/articles\/dcent-biometric-wallet\/\">our D\u2019CENT review<\/a><\/td><\/tr><tr><td>Radio<\/td><td>Bluetooth LE, Nordic nRF52840<\/td><td>Bluetooth<\/td><td>Bluetooth<\/td><\/tr><tr><td>Approve on the device<\/td><td>Yes, touchscreen<\/td><td>Yes, buttons<\/td><td>Yes, fingerprint or PIN<\/td><\/tr><tr><td>Most recent documented incident<\/td><td>App banner altered to phishing sites, confirmed 19 October 2026<\/td><td>Customer database exposed in 2020<\/td><td>App Wallet keys, alert 16 September 2026<\/td><\/tr><tr><td>Was the radio the cause?<\/td><td>No, per <a href=\"https:\/\/secuxtech.com\/blogs\/blog\/security-alert-beware-of-fake-secux-websites\" target=\"_blank\" rel=\"noopener\">SecuX\u2019s alert<\/a><\/td><td>No, it was order data<\/td><td>No, per D\u2019CENT, via <a href=\"https:\/\/getbitcoin.guide\/articles\/dcent-biometric-wallet\/\">our D\u2019CENT review<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Three Bluetooth wallets, three incidents, none of them through Bluetooth. That does not prove the radio safe; no published attack is not an audit. It does say where to spend your worry. The affiliate reviews spend theirs on the radio, because \u201cBluetooth risk\u201d makes a good subheading and \u201cthe app got hijacked\u201d costs them the commission.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If the radio still bothers you, the honest alternative is a device with none, such as an air gapped signer; the trade offs of that design are laid out in the <a href=\"https:\/\/getbitcoin.guide\/articles\/safepal-wallet-review\/\">SafePal air gap review<\/a>, and <a href=\"https:\/\/getbitcoin.guide\/articles\/what-is-a-cold-wallet\/\">what cold storage actually means<\/a> covers why no connection is not the same as no risk.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-do-you-keep-a-secux-v20-safe-day-to-day\">How do you keep a SecuX V20 safe day to day?<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Treat the V20 screen as the only screen that tells the truth. Check the amount and the full address there.<\/li>\n\n<li>Never type the recovery phrase into a phone, a website, a form or a support chat. SecuX\u2019s own alert says it will never ask, for any reason.<\/li>\n\n<li>Ignore banners, notifications and emails about \u201cwallet verification\u201d. Close the app and open SecuX\u2019s site by typing the address yourself.<\/li>\n\n<li>Keep the phrase written down and offline; <a href=\"https:\/\/getbitcoin.guide\/articles\/your-recovery-phrase\/\">how to store a recovery phrase<\/a> covers the options.<\/li>\n\n<li>If you use the hidden wallet feature, the passphrase is a second secret to back up; <a href=\"https:\/\/getbitcoin.guide\/articles\/wallet-passphrase\/\">how a wallet passphrase works<\/a> explains what losing it means.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">And on the closed source question the 2022 posters raised: the V20 asks you to trust SecuX\u2019s code without reading it. Whether that matters to you is a judgement this page will not make for you, though <a href=\"https:\/\/getbitcoin.guide\/articles\/crypto-wallet-open-source\/\">what open source firmware does and does not prove<\/a> sets out the argument both ways.<\/p>\n\n\n\n<div class=\"msq-tool msq-check\" data-id=\"secux-v20-safe-use\" data-verb=\" checked\">\n<h3>Before you approve anything on a V20<\/h3>\n<p>Five checks that take a minute and cover what went wrong in October 2026. None of them asks for your recovery phrase, and nothing ever should.<\/p>\n<label><input type=\"checkbox\">I read the amount and the full address on the V20 screen, not only in the app<\/label>\n<label><input type=\"checkbox\">I opened SecuX&#8217;s site by typing the address myself, not from a banner or notification<\/label>\n<label><input type=\"checkbox\">I have never typed my recovery phrase into a phone, website, form or chat<\/label>\n<label><input type=\"checkbox\">My recovery phrase is written down and stored offline<\/label>\n<label><input type=\"checkbox\">If I use the hidden wallet, its passphrase is backed up separately<\/label>\n<p class=\"msq-check-count\"><\/p>\n<p class=\"msq-note\">If you ever entered the phrase on a page that asked for it, SecuX&#8217;s 19 October 2026 alert says to treat the wallet as compromised and move to a new wallet with a new phrase.<\/p>\n<\/div>\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 \">Does the SecuX V20 work without Bluetooth?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes. Nordic\u2019s 2019 announcement and SecuX\u2019s listing both describe a USB connection alongside Bluetooth, so the V20 can be used over a cable with a computer.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Was the SecuX V20 hardware affected by the October 2026 incident?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>SecuX\u2019s alert of 19 October 2026 describes a modified banner in the SecuX App linking to phishing sites. It does not describe any fault in the V20 hardware or firmware, and no hardware advisory was found on 25 October 2026.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-3\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">What happens if I forget my SecuX V20 PIN?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>After five wrong attempts the device resets to factory settings, according to SecuX\u2019s FAQ. You then restore the wallet with your recovery words. Without them, the funds cannot be recovered.<\/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 SecuX V20 firmware open source?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>SecuX\u2019s pages do not describe the firmware as open source, and forum posters on Bitcointalk have criticised that the code cannot be verified. Treat it as closed unless SecuX publishes otherwise.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-5\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Can someone near me steal my coins over Bluetooth?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>SecuX says the private key never leaves the secure element and the link is AES encrypted, with a one time password on connection. No published attack on the V20 radio was found, but no independent audit of it was found either.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-6\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Should I trust a SecuX support message asking me to verify my wallet?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. SecuX states it will never ask for the recovery phrase, including for verification, security updates or firmware upgrades. Any message asking for it is a theft attempt.<\/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 SecuX V20 Bluetooth link carries and what it cannot reach, read from SecuX\u2019s security FAQ and Nordic\u2019s 2019 chip announcement, the hacked app banner SecuX confirmed on 19 October 2026, what owners report about the app, and the V20 set beside the Ledger Nano X and D\u2019CENT.<\/p>\n","protected":false},"author":1,"featured_media":728,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","rank_math_title":"SecuX V20 Review: Bluetooth, the App and a Hacked Banner","rank_math_description":"The SecuX V20 keeps its key in a secure element and sends only transaction data over Bluetooth. The October 2026 trouble was a hacked banner in the app.","rank_math_focus_keyword":"secux v20","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-731","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\/731","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=731"}],"version-history":[{"count":4,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/731\/revisions"}],"predecessor-version":[{"id":737,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/posts\/731\/revisions\/737"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/media\/728"}],"wp:attachment":[{"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/media?parent=731"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/categories?post=731"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/getbitcoin.guide\/articles\/wp-json\/wp\/v2\/tags?post=731"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}