{"product_id":"m5stack-stick-s3-rf-pack-s3-v1-black","title":"RF PACK S3 for M5Stack StickS3","description":"\u003cstyle\u003e\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=IBM+Plex+Sans:wght@400;500;600;700\u0026family=IBM+Plex+Mono:wght@400;500;600\u0026display=swap');\n  .peq-pdp { --peq-bg: #FFFFFF; --peq-bg-soft: #FAFAF7; --peq-bg-warm: #FFFBF6; --peq-fg: #161618; --peq-fg-soft: #2A2A2D; --peq-mute: #6B6B6B; --peq-mute-soft: #7E7E78; --peq-border: #ECECE7; --peq-border-soft: #F4F4EF; --peq-accent: #FF6B1F; --peq-accent-hover: #E55A12; --peq-amber-bg: #FEF7E6; --peq-dark: #161618; font-family: 'IBM Plex Sans', ui-sans-serif, system-ui, -apple-system, sans-serif; font-size: 15px; line-height: 1.65; color: var(--peq-fg-soft); background: var(--peq-bg); margin: 0 0 24px; -webkit-text-size-adjust: 100%; }\n  .peq-pdp *, .peq-pdp *::before, .peq-pdp *::after { box-sizing: border-box; }\n  .peq-pdp p { margin: 0 0 0.85em; color: var(--peq-fg-soft); }\n  .peq-pdp strong { font-weight: 600; color: var(--peq-fg); }\n  .peq-pdp em { font-style: normal !important; }\n  .peq-pdp code { font-family: 'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace; font-size: 0.85em; background: var(--peq-bg-soft); padding: 1px 6px; color: var(--peq-fg); border: 1px solid var(--peq-border); }\n\n  .peq-header { padding: 0; }\n  .peq-eyebrow { font-family: 'IBM Plex Mono', monospace; font-size: 12px; letter-spacing: 0.2em; color: var(--peq-accent); text-transform: uppercase; font-weight: 500; margin: 0 0 12px; }\n  .peq-headline { font-family: 'IBM Plex Sans', sans-serif; font-size: clamp(24px, 2.2vw + 14px, 30px); line-height: 1.18; font-weight: 600; letter-spacing: -0.02em; margin: 0 0 14px; color: var(--peq-fg); max-width: 22ch; }\n  .peq-headline em { font-style: normal !important; color: var(--peq-accent); }\n  .peq-lede { font-size: clamp(14.5px, 0.4vw + 13px, 16px); line-height: 1.55; color: var(--peq-mute); margin: 0; max-width: 56ch; }\n\n  .peq-highlights { list-style: none; padding: 0; margin: 20px 0 24px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px 32px; }\n  .peq-highlights li { display: flex; align-items: baseline; gap: 12px; font-size: 14px; line-height: 1.5; color: var(--peq-fg); }\n  .peq-hl-dot { display: inline-block; flex-shrink: 0; width: 6px; height: 6px; background: var(--peq-accent); border-radius: 50%; transform: translateY(-2px); }\n  .peq-hl-mute { color: var(--peq-mute); font-size: 12.5px; font-family: 'IBM Plex Mono', monospace; }\n\n  .peq-actions { display: flex; gap: 10px; margin: 0 0 40px; flex-wrap: wrap; }\n  .peq-pdp a.peq-btn { display: inline-flex !important; align-items: center; justify-content: center; gap: 8px; padding: 13px 20px; min-height: 48px; font-family: 'IBM Plex Sans', sans-serif; font-size: 14px; font-weight: 500; text-decoration: none !important; border: 1px solid transparent; transition: background 0.15s, transform 0.1s; line-height: 1.2; letter-spacing: 0.005em; }\n  @media (hover: hover) and (pointer: fine) {\n    .peq-pdp a.peq-btn:hover { transform: translateY(-1px); }\n    .peq-pdp a.peq-btn--primary:hover { background: #E55A12 !important; color: #FFFFFF !important; }\n    .peq-pdp a.peq-btn--secondary:hover { background: #000000 !important; color: #FFFFFF !important; }\n    .peq-pdp a.peq-btn--ghost:hover { background: #FAFAF7 !important; color: #161618 !important; border-color: #161618 !important; }\n  }\n  .peq-pdp a.peq-btn--primary { background: #FF6B1F !important; color: #FFFFFF !important; border-color: #FF6B1F !important; }\n  .peq-pdp a.peq-btn--secondary { background: #161618 !important; color: #FFFFFF !important; border-color: #161618 !important; }\n  .peq-pdp a.peq-btn--ghost { background: transparent !important; color: #161618 !important; border-color: #ECECE7 !important; }\n  .peq-btn__icon { width: 16px; height: 16px; flex-shrink: 0; }\n\n  .peq-section { margin: 48px 0; }\n  .peq-section__label { font-family: 'IBM Plex Mono', monospace; font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; font-weight: 500; margin: 0 0 12px; }\n  .peq-section__label .peq-c { color: var(--peq-mute-soft); }\n  .peq-section__label .peq-num { color: var(--peq-accent); font-weight: 600; }\n  .peq-section__label .peq-name { color: var(--peq-fg); }\n  .peq-section__title { font-size: clamp(19px, 1.4vw + 14px, 22px); line-height: 1.3; letter-spacing: -0.015em; margin: 0 0 16px; font-weight: 600; color: var(--peq-fg); max-width: 28ch; }\n\n  .peq-arch { background: var(--peq-dark); padding: 28px 22px; margin: 16px 0 0; border-left: 3px solid var(--peq-accent); }\n  .peq-arch__label { font-family: 'IBM Plex Mono', monospace; font-size: 11px; letter-spacing: 0.2em; color: var(--peq-accent); text-transform: uppercase; font-weight: 500; margin: 0 0 20px; }\n  .peq-arch__node { font-family: 'IBM Plex Mono', monospace; font-size: 12.5px; color: rgba(255, 255, 255, 0.95); font-weight: 500; padding: 11px 14px; border: 1px solid rgba(255, 255, 255, 0.2); background: rgba(255, 255, 255, 0.03); text-align: center; letter-spacing: 0.04em; }\n  .peq-arch__line { width: 1.5px; height: 18px; background: rgba(255, 255, 255, 0.3); margin: 0 auto; }\n  .peq-arch__bus { font-family: 'IBM Plex Mono', monospace; font-size: 11.5px; letter-spacing: 0.06em; color: var(--peq-accent); padding: 10px 14px; background: rgba(255, 107, 31, 0.08); border: 1px dashed rgba(255, 107, 31, 0.4); text-align: center; font-weight: 500; }\n  .peq-arch__branches { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 4px; }\n  .peq-arch__csn { font-family: 'IBM Plex Mono', monospace; font-size: 10.5px; letter-spacing: 0.16em; color: var(--peq-accent); text-transform: uppercase; font-weight: 600; text-align: center; padding: 9px 8px; background: rgba(255, 107, 31, 0.06); border: 1px solid rgba(255, 107, 31, 0.3); border-bottom: none; }\n  .peq-arch__chip { padding: 14px 10px; border: 1px solid rgba(255, 255, 255, 0.2); background: rgba(255, 255, 255, 0.03); text-align: center; }\n  .peq-arch__chip-name { display: block; font-family: 'IBM Plex Sans', sans-serif; font-size: 14.5px; color: rgba(255, 255, 255, 0.96); margin: 0 0 3px; font-weight: 600; letter-spacing: -0.005em; }\n  .peq-arch__chip-band { display: block; font-family: 'IBM Plex Mono', monospace; font-size: 12px; color: var(--peq-accent); letter-spacing: 0.04em; }\n  .peq-arch__caption { font-family: 'IBM Plex Sans', sans-serif; font-size: 12.5px; line-height: 1.55; color: rgba(255, 255, 255, 0.5); margin: 20px 0 0; padding: 16px 0 0; border-top: 1px dashed rgba(255, 255, 255, 0.15); text-align: center; font-style: italic; }\n\n  .peq-compare { display: grid; grid-template-columns: 1fr 56px 1fr; align-items: stretch; border: 1px solid var(--peq-border); margin: 16px 0 0; background: #fff; }\n  .peq-compare__col { padding: 18px 20px 20px; }\n  .peq-compare__col--legacy { background: var(--peq-bg-soft); }\n  .peq-compare__col--peq { background: var(--peq-bg-warm); border-left: 2px solid var(--peq-accent); }\n  .peq-compare__divider { display: flex; align-items: center; justify-content: center; gap: 6px; font-family: 'IBM Plex Mono', monospace; font-size: 11px; letter-spacing: 0.18em; color: var(--peq-mute); background: var(--peq-bg); }\n  .peq-compare__divider::before, .peq-compare__divider::after { content: ''; width: 8px; height: 1px; background: var(--peq-border); display: inline-block; }\n  .peq-compare__head { font-family: 'IBM Plex Mono', monospace; font-size: 11px; letter-spacing: 0.16em; color: var(--peq-mute); text-transform: uppercase; margin: 0 0 8px; font-weight: 500; }\n  .peq-compare__col--peq .peq-compare__head { color: var(--peq-accent); }\n  .peq-compare__name { font-size: 15.5px; font-weight: 600; margin: 0 0 6px; color: var(--peq-fg); line-height: 1.3; }\n  .peq-compare__col--legacy .peq-compare__name { color: var(--peq-mute); text-decoration: line-through; text-decoration-thickness: 1px; }\n  .peq-compare__desc { font-size: 13.5px; line-height: 1.55; color: var(--peq-mute); margin: 0; }\n  .peq-compare__col--peq .peq-compare__desc { color: var(--peq-fg-soft); }\n\n  .peq-note { background: var(--peq-amber-bg); border-left: 2px solid #D97706; padding: 16px 20px; margin: 20px 0 0; }\n  .peq-note__label { font-family: 'IBM Plex Mono', monospace; font-size: 11px; letter-spacing: 0.2em; color: #92400E; text-transform: uppercase; font-weight: 600; margin: 0 0 6px; }\n  .peq-note p { margin: 0; color: #422006; font-size: 14px; line-height: 1.6; }\n  .peq-note strong { color: #422006; }\n\n  .peq-steps { margin: 16px 0 0; position: relative; }\n  .peq-steps::before { content: ''; position: absolute; left: 20px; top: 24px; bottom: 24px; width: 1px; background: var(--peq-border); z-index: 0; }\n  .peq-step { display: grid; grid-template-columns: 40px 1fr; gap: 16px; align-items: start; padding: 10px 0; position: relative; }\n  .peq-step__num { font-family: 'IBM Plex Mono', monospace; font-size: 12px; font-weight: 600; color: var(--peq-fg); line-height: 1; background: #fff; border: 1.5px solid var(--peq-fg); width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; border-radius: 50%; position: relative; z-index: 1; }\n  .peq-step:last-child .peq-step__num { background: var(--peq-fg); color: var(--peq-accent); }\n  .peq-step__body { font-size: 14.5px; line-height: 1.55; padding-top: 10px; color: var(--peq-fg-soft); }\n  .peq-step__body strong { color: var(--peq-fg); }\n\n  .peq-fw-strip { display: flex; flex-wrap: wrap; gap: 24px; padding: 16px 20px; margin: 18px 0 0; background: var(--peq-bg-soft); border: 1px solid var(--peq-border); align-items: center; font-family: 'IBM Plex Mono', monospace; font-size: 13px; }\n  .peq-fw-strip__label { font-size: 11px; letter-spacing: 0.2em; color: var(--peq-mute); text-transform: uppercase; font-weight: 500; }\n  .peq-fw-strip__list { display: flex; flex-wrap: wrap; gap: 18px; align-items: center; }\n  .peq-fw-strip__item { display: inline-flex; align-items: center; gap: 6px; color: var(--peq-fg); font-weight: 500; }\n  .peq-fw-strip__check { color: var(--peq-accent); font-weight: 600; font-size: 14px; }\n\n  .peq-box__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin: 16px 0 10px; }\n  .peq-box__item { background: #fff; border: 1px solid var(--peq-border); padding: 18px 16px 16px; text-align: left; position: relative; }\n  .peq-box__item::before { content: ''; position: absolute; top: 0; left: 0; width: 18px; height: 1.5px; background: var(--peq-accent); }\n  .peq-box__icon { width: 24px; height: 24px; color: var(--peq-fg); margin: 0 0 12px; display: block; }\n  .peq-box__qty { font-family: 'IBM Plex Mono', monospace; font-size: 11.5px; font-weight: 500; color: var(--peq-mute); margin: 0 0 3px; letter-spacing: 0.04em; }\n  .peq-box__name { font-size: 13.5px; font-weight: 600; line-height: 1.3; margin: 0 0 4px; color: var(--peq-fg); }\n  .peq-box__detail { font-size: 12px; line-height: 1.4; color: var(--peq-mute); margin: 0; }\n  .peq-box__note { font-size: 12.5px; color: var(--peq-mute); font-style: italic; margin: 8px 0 0; }\n\n  .peq-specs__list { margin: 16px 0 0; padding: 0; border-top: 1px solid var(--peq-border); }\n  .peq-specs__group-title { font-family: 'IBM Plex Mono', monospace; font-size: 10.5px; letter-spacing: 0.22em; color: var(--peq-accent); text-transform: uppercase; font-weight: 600; margin: 22px 0 8px; padding-bottom: 6px; border-bottom: 1px solid var(--peq-border); }\n  .peq-specs__group-title:first-child { margin-top: 0; }\n  .peq-specs__row { display: grid; grid-template-columns: 220px 1fr; gap: 24px; padding: 11px 4px; border-bottom: 1px solid var(--peq-border-soft); align-items: baseline; }\n  .peq-specs__row dt { font-family: 'IBM Plex Mono', monospace; font-size: 11.5px; letter-spacing: 0.04em; color: var(--peq-mute); text-transform: uppercase; font-weight: 500; margin: 0; }\n  .peq-specs__row dd { margin: 0; font-size: 14px; color: var(--peq-fg); font-weight: 500; }\n  .peq-pdp .peq-specs__row dd a { color: #FF6B1F !important; text-decoration: none !important; border-bottom: 1px solid currentColor; }\n\n  .peq-faq { margin: 16px 0 0; border-top: 1px solid var(--peq-border); }\n  .peq-faq__item { border-bottom: 1px solid var(--peq-border); }\n  .peq-faq__item summary { list-style: none; cursor: pointer; padding: 18px 4px 18px 0; min-height: 56px; display: grid; grid-template-columns: 36px 1fr 24px; gap: 14px; align-items: center; font-size: 14.5px; font-weight: 500; color: var(--peq-fg); transition: color 0.15s; }\n  .peq-faq__item summary::-webkit-details-marker { display: none; }\n  @media (hover: hover) and (pointer: fine) {\n    .peq-faq__item summary:hover { color: var(--peq-accent); }\n  }\n  .peq-faq__q { font-family: 'IBM Plex Mono', monospace; font-size: 11px; font-weight: 600; color: var(--peq-accent); letter-spacing: 0.08em; }\n  .peq-faq__sign { font-family: 'IBM Plex Mono', monospace; font-size: 18px; color: var(--peq-mute); text-align: center; line-height: 1; transition: transform 0.2s; }\n  .peq-faq__item[open] .peq-faq__sign { transform: rotate(45deg); color: var(--peq-accent); }\n  .peq-faq__answer { padding: 0 0 18px 50px; font-size: 14px; line-height: 1.65; color: var(--peq-fg-soft); }\n  .peq-faq__answer p { margin: 0 0 0.7em; }\n  .peq-faq__answer p:last-child { margin-bottom: 0; }\n  .peq-faq__cmd { font-family: 'IBM Plex Mono', monospace; font-size: 12px; background: var(--peq-bg-soft); border: 1px solid var(--peq-border); padding: 10px 14px; margin: 8px 0; color: var(--peq-fg); overflow-x: auto; scrollbar-width: none; white-space: nowrap; }\n  .peq-faq__cmd::-webkit-scrollbar { display: none; }\n  .peq-faq__cmd strong { color: var(--peq-accent); }\n\n  .peq-compliance { font-size: 12px; line-height: 1.55; color: var(--peq-mute); padding: 16px 18px; background: var(--peq-bg-soft); border-left: 2px solid var(--peq-border); margin-top: 32px; font-style: italic; }\n\n  @media (max-width: 1023px) {\n    .peq-section { margin: 40px 0; }\n    .peq-highlights { grid-template-columns: 1fr; gap: 10px; }\n    .peq-specs__row { grid-template-columns: 180px 1fr; gap: 18px; }\n  }\n  @media (max-width: 600px) {\n    .peq-section { margin: 36px 0; }\n    .peq-actions { flex-direction: column; gap: 8px; margin-bottom: 32px; }\n    .peq-pdp a.peq-btn { width: 100%; padding: 14px 18px; font-size: 14.5px; }\n    .peq-arch { padding: 24px 18px; }\n    .peq-arch__branches { grid-template-columns: 1fr; gap: 10px; }\n    .peq-arch__node, .peq-arch__bus { font-size: 11.5px; padding: 10px 12px; letter-spacing: 0.03em; }\n    .peq-arch__chip-name { font-size: 13.5px; }\n    .peq-compare { grid-template-columns: 1fr; }\n    .peq-compare__divider { padding: 8px; border-top: 1px solid var(--peq-border); border-bottom: 1px solid var(--peq-border); }\n    .peq-compare__col--peq { border-left: none; border-top: 2px solid var(--peq-accent); }\n    .peq-note { margin-top: 24px; }\n    .peq-fw-strip { flex-direction: column; align-items: flex-start; gap: 10px; padding: 16px; }\n    .peq-box__item { padding: 16px 14px 14px; }\n    .peq-specs__row { grid-template-columns: 1fr; gap: 4px; padding: 14px 4px; border-bottom-style: dashed; }\n    .peq-faq__item summary { grid-template-columns: 32px 1fr 22px; gap: 12px; padding: 18px 4px 18px 0; font-size: 14px; }\n    .peq-faq__answer { padding: 0 0 18px 44px; }\n    .peq-step { grid-template-columns: 36px 1fr; gap: 14px; }\n    .peq-step__num { width: 36px; height: 36px; font-size: 11.5px; }\n    .peq-steps::before { left: 18px; }\n  }\n  @media (max-width: 360px) {\n    .peq-box__grid { grid-template-columns: 1fr; }\n    .peq-box__item { display: grid; grid-template-columns: 24px 1fr auto; gap: 14px; align-items: center; padding: 14px; }\n    .peq-box__icon { margin: 0; }\n    .peq-box__qty { margin: 0; align-self: center; }\n    .peq-box__name { margin: 0; }\n    .peq-box__detail { display: none; }\n  }\n\u003c\/style\u003e\n\u003cdiv class=\"peq-pdp\"\u003e\n\u003cheader class=\"peq-header\"\u003e\n\u003cp class=\"peq-eyebrow\"\u003eRF Pack S3 · Black\u003c\/p\u003e\n\u003ch2 class=\"peq-headline\"\u003eDual-band RF that \u003cem\u003eplugs into\u003c\/em\u003e StickS3.\u003c\/h2\u003e\n\u003cp class=\"peq-lede\"\u003eSub-GHz CC1101 and 2.4 GHz NRF24L01+ with PA\/LNA on a four-layer board, screwed onto your M5Stack StickS3 with a native Bruce-firmware pin map.\u003c\/p\u003e\n\u003c\/header\u003e\n\u003cul class=\"peq-highlights\"\u003e\n\u003cli\u003e\n\u003cspan class=\"peq-hl-dot\"\u003e\u003c\/span\u003eDual-band front end — NRF24L01+ \u003cspan class=\"peq-hl-mute\"\u003e2.4 GHz\u003c\/span\u003e + CC1101 \u003cspan class=\"peq-hl-mute\"\u003e433 MHz\u003c\/span\u003e, both PA\/LNA\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan class=\"peq-hl-dot\"\u003e\u003c\/span\u003eSN74 logic buffer for clean SPI isolation between chips\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan class=\"peq-hl-dot\"\u003e\u003c\/span\u003eCustom LC filtering — holds 3.3 V rail under PA load\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan class=\"peq-hl-dot\"\u003e\u003c\/span\u003eTop-mounted SMA — bottom grip stays clear\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan class=\"peq-hl-dot\"\u003e\u003c\/span\u003eNative pin map for the Bruce \u003cspan class=\"peq-hl-mute\"\u003em5stack-sticks3\u003c\/span\u003e build\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan class=\"peq-hl-dot\"\u003e\u003c\/span\u003eM2 screw mount, four-layer PCB, Grove cutout preserved\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv class=\"peq-actions\"\u003e\n\u003ca rel=\"noopener\" href=\"https:\/\/bruce.computer\/\" class=\"peq-btn peq-btn--primary\" target=\"_blank\"\u003e \u003csvg aria-hidden=\"true\" stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" viewbox=\"0 0 24 24\" class=\"peq-btn__icon\"\u003e\u003cpath d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\u003e\u003c\/path\u003e\u003cpolyline points=\"7 10 12 15 17 10\"\u003e\u003c\/polyline\u003e\u003cline y2=\"3\" x2=\"12\" y1=\"15\" x1=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e Get Bruce Firmware \u003c\/a\u003e \u003ca rel=\"noopener\" href=\"https:\/\/bruce.computer\/flasher\" class=\"peq-btn peq-btn--secondary\" target=\"_blank\"\u003e \u003csvg aria-hidden=\"true\" stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" viewbox=\"0 0 24 24\" class=\"peq-btn__icon\"\u003e\u003cpath d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\u003e\u003c\/path\u003e\u003cpolyline points=\"14 2 14 8 20 8\"\u003e\u003c\/polyline\u003e\u003cline y2=\"13\" x2=\"8\" y1=\"13\" x1=\"16\"\u003e\u003c\/line\u003e\u003cline y2=\"17\" x2=\"8\" y1=\"17\" x1=\"16\"\u003e\u003c\/line\u003e\u003c\/svg\u003e Click to Flash Bruce Firmware\u003c\/a\u003e\n\u003c\/div\u003e\n\u003csection class=\"peq-section\"\u003e\n\u003cp class=\"peq-section__label\"\u003e\u003cspan class=\"peq-c\"\u003e\/\/\u003c\/span\u003e \u003cspan class=\"peq-num\"\u003e01\u003c\/span\u003e · \u003cspan class=\"peq-name\"\u003eArchitecture\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3 class=\"peq-section__title\"\u003eSPI bus, isolated. PA rails, decoupled.\u003c\/h3\u003e\n\u003cp\u003eOne ESP32-S3 host drives both transceivers over a shared SPI bus. The SN74 logic buffer sits between the host and the radios, so transients on either chip don't disturb the line back to the MCU.\u003c\/p\u003e\n\u003cdiv class=\"peq-arch\"\u003e\n\u003cp class=\"peq-arch__label\"\u003eSignal Path\u003c\/p\u003e\n\u003cdiv class=\"peq-arch__node\"\u003eM5Stack StickS3 — ESP32-S3 host\u003c\/div\u003e\n\u003cdiv class=\"peq-arch__line\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"peq-arch__bus\"\u003eSHARED SPI BUS · MOSI \/ MISO \/ SCK\u003c\/div\u003e\n\u003cdiv class=\"peq-arch__line\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"peq-arch__node\"\u003eSN74 Logic Buffer · SPI Isolation\u003c\/div\u003e\n\u003cdiv class=\"peq-arch__line\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"peq-arch__branches\"\u003e\n\u003cdiv\u003e\n\u003cdiv class=\"peq-arch__csn\"\u003eCSN_A\u003c\/div\u003e\n\u003cdiv class=\"peq-arch__chip\"\u003e\n\u003cspan class=\"peq-arch__chip-name\"\u003eNRF24L01+ · PA\/LNA\u003c\/span\u003e \u003cspan class=\"peq-arch__chip-band\"\u003e2.4 GHz · SMA top\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv class=\"peq-arch__csn\"\u003eCSN_B\u003c\/div\u003e\n\u003cdiv class=\"peq-arch__chip\"\u003e\n\u003cspan class=\"peq-arch__chip-name\"\u003eCC1101 · PA\/LNA\u003c\/span\u003e \u003cspan class=\"peq-arch__chip-band\"\u003e433 MHz · SMA top\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp class=\"peq-arch__caption\"\u003eLC filter network on the 3.3 V rail keeps PA current spikes off the host supply.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"peq-section\"\u003e\n\u003cp class=\"peq-section__label\"\u003e\u003cspan class=\"peq-c\"\u003e\/\/\u003c\/span\u003e \u003cspan class=\"peq-num\"\u003e02\u003c\/span\u003e · \u003cspan class=\"peq-name\"\u003eWhy not a generic breakout\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3 class=\"peq-section__title\"\u003eBuilt for the StickS3 \u003c\/h3\u003e\n\u003cdiv class=\"peq-compare\"\u003e\n\u003cdiv class=\"peq-compare__col peq-compare__col--legacy\"\u003e\n\u003cp class=\"peq-compare__head\"\u003eGeneric NRF24\/CC1101 board\u003c\/p\u003e\n\u003cp class=\"peq-compare__name\"\u003eBare SPI, jumper wires, PCB antennas.\u003c\/p\u003e\n\u003cp class=\"peq-compare__desc\"\u003eShared SPI lines without buffering, unfiltered 3.3 V rail, generic pin order, mechanical fit handled with tape and prayer. Crashes show up the moment a PA stage keys up.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"peq-compare__divider\"\u003eVS\u003c\/div\u003e\n\u003cdiv class=\"peq-compare__col peq-compare__col--peq\"\u003e\n\u003cp class=\"peq-compare__head\"\u003ePINGEQUA RF Pack S3\u003c\/p\u003e\n\u003cp class=\"peq-compare__name\"\u003eBuffered SPI, filtered rails, dedicated form factor.\u003c\/p\u003e\n\u003cp class=\"peq-compare__desc\"\u003eSN74 isolation between host and radios, LC-filtered supply, two top-mounted SMA pigtails, M2 mounting holes that line up with the StickS3 shell, pin map matched to Bruce's \u003ccode\u003em5stack-sticks3\u003c\/code\u003e build.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"peq-section\"\u003e\n\u003cp class=\"peq-section__label\"\u003e\u003cspan class=\"peq-c\"\u003e\/\/\u003c\/span\u003e \u003cspan class=\"peq-num\"\u003e03\u003c\/span\u003e · \u003cspan class=\"peq-name\"\u003eQuick Start\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3 class=\"peq-section__title\"\u003eThree steps from box to spectrum view.\u003c\/h3\u003e\n\u003cdiv class=\"peq-steps\"\u003e\n\u003cdiv class=\"peq-step\"\u003e\n\u003cdiv class=\"peq-step__num\"\u003e01\u003c\/div\u003e\n\u003cdiv class=\"peq-step__body\"\u003e\n\u003cstrong\u003eMount the board.\u003c\/strong\u003e Seat the RF Pack S3 against the back of your StickS3 and drive the four M2 screws. Edge cutouts clear the Grove port; SMA jacks face up.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"peq-step\"\u003e\n\u003cdiv class=\"peq-step__num\"\u003e02\u003c\/div\u003e\n\u003cdiv class=\"peq-step__body\"\u003e\n\u003cstrong\u003eAttach the antennas.\u003c\/strong\u003e Thread the 433 MHz antenna onto the CC1101 SMA and the 2.4 GHz antenna onto the NRF24 SMA. Hand-tight is enough.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"peq-step\"\u003e\n\u003cdiv class=\"peq-step__num\"\u003e03\u003c\/div\u003e\n\u003cdiv class=\"peq-step__body\"\u003e\n\u003cstrong\u003eFlash and select.\u003c\/strong\u003e Flash the latest Bruce \u003ccode\u003em5stack-sticks3\u003c\/code\u003e build via the official web flasher, then pick your radio in \u003ccode\u003eRF → Config → Module\u003c\/code\u003e. Use the \u003cem\u003e(Legacy)\u003c\/em\u003e driver entries — see FAQ.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"peq-section\"\u003e\n\u003cp class=\"peq-section__label\"\u003e\u003cspan class=\"peq-c\"\u003e\/\/\u003c\/span\u003e \u003cspan class=\"peq-num\"\u003e04\u003c\/span\u003e · \u003cspan class=\"peq-name\"\u003eCompatibility\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3 class=\"peq-section__title\"\u003eDesigned for one host, one firmware.\u003c\/h3\u003e\n\u003cdiv class=\"peq-fw-strip\"\u003e\n\u003cspan class=\"peq-fw-strip__label\"\u003eVerified on\u003c\/span\u003e\n\u003cdiv class=\"peq-fw-strip__list\"\u003e\n\u003cspan class=\"peq-fw-strip__item\"\u003e\u003cspan class=\"peq-fw-strip__check\"\u003e✓\u003c\/span\u003e M5Stack StickS3\u003c\/span\u003e \u003cspan class=\"peq-fw-strip__item\"\u003e\u003cspan class=\"peq-fw-strip__check\"\u003e✓\u003c\/span\u003e Bruce firmware (latest)\u003c\/span\u003e \u003cspan class=\"peq-fw-strip__item\"\u003e\u003cspan class=\"peq-fw-strip__check\"\u003e✓\u003c\/span\u003e m5stack-sticks3 build\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp style=\"margin-top: 12px; font-size: 13.5px; color: var(--peq-mute);\"\u003eNot a fit for: M5StickC Plus 1.1 \/ Plus 2 (use Stick-RF 424), Cardputer \/ Cardputer ADV (use Hydra RF Cap series), or any non-M5Stack ESP32 board.\u003c\/p\u003e\n\u003c\/section\u003e\n\u003csection class=\"peq-section\"\u003e\n\u003cp class=\"peq-section__label\"\u003e\u003cspan class=\"peq-c\"\u003e\/\/\u003c\/span\u003e \u003cspan class=\"peq-num\"\u003e05\u003c\/span\u003e · \u003cspan class=\"peq-name\"\u003eIn the box\u003c\/span\u003e\u003c\/p\u003e\n\u003cdiv class=\"peq-box__grid\"\u003e\n\u003cdiv class=\"peq-box__item\"\u003e\n\u003csvg aria-hidden=\"true\" stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"1.6\" stroke=\"currentColor\" fill=\"none\" viewbox=\"0 0 24 24\" class=\"peq-box__icon\"\u003e\u003crect rx=\"1\" height=\"16\" width=\"18\" y=\"4\" x=\"3\"\u003e\u003c\/rect\u003e\u003ccircle r=\"1\" cy=\"9\" cx=\"8\"\u003e\u003c\/circle\u003e\u003ccircle r=\"1\" cy=\"9\" cx=\"16\"\u003e\u003c\/circle\u003e\u003cpath d=\"M7 14h10\"\u003e\u003c\/path\u003e\u003cpath d=\"M7 17h6\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n\u003cp class=\"peq-box__qty\"\u003eQTY 1\u003c\/p\u003e\n\u003cp class=\"peq-box__name\"\u003eRF Pack S3 board\u003c\/p\u003e\n\u003cp class=\"peq-box__detail\"\u003eFour-layer PCB, dual-radio, SN74-buffered.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"peq-box__item\"\u003e\n\u003csvg aria-hidden=\"true\" stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"1.6\" stroke=\"currentColor\" fill=\"none\" viewbox=\"0 0 24 24\" class=\"peq-box__icon\"\u003e\u003cpath d=\"M12 22V10\"\u003e\u003c\/path\u003e\u003cpath d=\"M9 22h6\"\u003e\u003c\/path\u003e\u003ccircle r=\"2\" cy=\"6\" cx=\"12\"\u003e\u003c\/circle\u003e\u003cpath d=\"M8 4l4-2 4 2\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n\u003cp class=\"peq-box__qty\"\u003eQTY 1\u003c\/p\u003e\n\u003cp class=\"peq-box__name\"\u003e2.4 GHz antenna\u003c\/p\u003e\n\u003cp class=\"peq-box__detail\"\u003eSMA, for the NRF24L01+ jack.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"peq-box__item\"\u003e\n\u003csvg aria-hidden=\"true\" stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"1.6\" stroke=\"currentColor\" fill=\"none\" viewbox=\"0 0 24 24\" class=\"peq-box__icon\"\u003e\u003cpath d=\"M12 22V8\"\u003e\u003c\/path\u003e\u003cpath d=\"M9 22h6\"\u003e\u003c\/path\u003e\u003cpath d=\"M9 8l3-6 3 6\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n\u003cp class=\"peq-box__qty\"\u003eQTY 1\u003c\/p\u003e\n\u003cp class=\"peq-box__name\"\u003e433 MHz antenna\u003c\/p\u003e\n\u003cp class=\"peq-box__detail\"\u003eSMA, for the CC1101 jack.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"peq-box__item\"\u003e\n\u003csvg aria-hidden=\"true\" stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"1.6\" stroke=\"currentColor\" fill=\"none\" viewbox=\"0 0 24 24\" class=\"peq-box__icon\"\u003e\u003ccircle r=\"3\" cy=\"12\" cx=\"12\"\u003e\u003c\/circle\u003e\u003cpath d=\"M12 3v3\"\u003e\u003c\/path\u003e\u003cpath d=\"M12 18v3\"\u003e\u003c\/path\u003e\u003cpath d=\"M3 12h3\"\u003e\u003c\/path\u003e\u003cpath d=\"M18 12h3\"\u003e\u003c\/path\u003e\u003cpath d=\"M5.6 5.6l2.1 2.1\"\u003e\u003c\/path\u003e\u003cpath d=\"M16.3 16.3l2.1 2.1\"\u003e\u003c\/path\u003e\u003cpath d=\"M5.6 18.4l2.1-2.1\"\u003e\u003c\/path\u003e\u003cpath d=\"M16.3 7.7l2.1-2.1\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n\u003cp class=\"peq-box__qty\"\u003eQTY 2\u003c\/p\u003e\n\u003cp class=\"peq-box__name\"\u003eM2 screws\u003c\/p\u003e\n\u003cp class=\"peq-box__detail\"\u003eFor the StickS3 backplate mount.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"peq-box__item\"\u003e\n\u003csvg aria-hidden=\"true\" stroke-linejoin=\"round\" stroke-linecap=\"round\" stroke-width=\"1.6\" stroke=\"currentColor\" fill=\"none\" viewbox=\"0 0 24 24\" class=\"peq-box__icon\"\u003e\u003cpath d=\"M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"\u003e\u003c\/path\u003e\u003cpolyline points=\"14 3 14 9 20 9\"\u003e\u003c\/polyline\u003e\u003cline y2=\"14\" x2=\"15\" y1=\"14\" x1=\"9\"\u003e\u003c\/line\u003e\u003cline y2=\"17\" x2=\"13\" y1=\"17\" x1=\"9\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\n\u003cp class=\"peq-box__qty\"\u003eQTY 1\u003c\/p\u003e\n\u003cp class=\"peq-box__name\"\u003eQuick start card\u003c\/p\u003e\n\u003cp class=\"peq-box__detail\"\u003eBruce menu paths, pin reference.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp class=\"peq-box__note\"\u003eStickS3 host device is not included.\u003c\/p\u003e\n\u003c\/section\u003e\n\u003csection class=\"peq-section\"\u003e\n\u003cp class=\"peq-section__label\"\u003e\u003cspan class=\"peq-c\"\u003e\/\/\u003c\/span\u003e \u003cspan class=\"peq-num\"\u003e06\u003c\/span\u003e · \u003cspan class=\"peq-name\"\u003eSpecifications\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3 class=\"peq-section__title\"\u003eThe numbers that matter.\u003c\/h3\u003e\n\u003cp class=\"peq-specs__group-title\"\u003eRF Front-End\u003c\/p\u003e\n\u003cdiv class=\"peq-specs__row\"\u003e2.4 GHz transceiverNRF24L01+ with PA\/LNA\u003c\/div\u003e\n\u003cdiv class=\"peq-specs__row\"\u003eSub-GHz transceiverCC1101 with PA\/LNA, 433 MHz ISM band\u003c\/div\u003e\n\u003cdiv class=\"peq-specs__row\"\u003eAntenna interface 2 × SMA, top-mounted\u003c\/div\u003e\n\u003cp class=\"peq-specs__group-title\"\u003eHardware\u003c\/p\u003e\n\u003cdiv class=\"peq-specs__row\"\u003ePCB4-layer\u003c\/div\u003e\n\u003cdiv class=\"peq-specs__row\"\u003eSPI isolationSN74 logic buffer\u003c\/div\u003e\n\u003cdiv class=\"peq-specs__row\"\u003ePower conditioningLC filter network on 3.3 V rail\u003c\/div\u003e\n\u003cdiv class=\"peq-specs__row\"\u003ePin mapping Native to Bruce \u003ccode\u003em5stack-sticks3\u003c\/code\u003e build\u003c\/div\u003e\n\u003cp class=\"peq-specs__group-title\"\u003eMechanical\u003c\/p\u003e\n\u003cdiv class=\"peq-specs__row\"\u003eMount M2 screw mount, permanent\u003c\/div\u003e\n\u003cdiv class=\"peq-specs__row\"\u003eCutouts Grove port pass-through preserved\u003c\/div\u003e\n\u003cdiv class=\"peq-specs__row\"\u003eForm factor StickS3 dedicated backpack\u003c\/div\u003e\n\u003cp class=\"peq-specs__group-title\"\u003eCompatibility\u003c\/p\u003e\n\u003cdiv class=\"peq-specs__row\"\u003eHost deviceM5Stack StickS3 only\u003c\/div\u003e\n\u003cdiv class=\"peq-specs__row\"\u003eFirmwareBruce, latest stable release\u003c\/div\u003e\n\u003c\/section\u003e\n\u003csection class=\"peq-section\"\u003e\n\u003cp class=\"peq-section__label\"\u003e\u003cspan class=\"peq-c\"\u003e\/\/\u003c\/span\u003e \u003cspan class=\"peq-num\"\u003e07\u003c\/span\u003e · \u003cspan class=\"peq-name\"\u003eFAQ\u003c\/span\u003e\u003c\/p\u003e\n\u003ch3 class=\"peq-section__title\"\u003eReal questions from real buyers.\u003c\/h3\u003e\n\u003cdiv class=\"peq-faq\"\u003e\n\u003cdetails class=\"peq-faq__item\"\u003e\n\u003csummary\u003e\u003cspan class=\"peq-faq__q\"\u003eQ.01\u003c\/span\u003e \u003cspan\u003eI'm getting \"CC1101 not found\" or \"NRF24 not detected\" — is the board dead?\u003c\/span\u003e \u003cspan class=\"peq-faq__sign\"\u003e+\u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"peq-faq__answer\"\u003e\n\u003cp\u003eAlmost always a firmware issue, not a hardware one. Bruce v1.12 and v1.13 shipped a SPI-timing and AXP power-management bug that prevents StickC-class hosts from detecting the radios. Flash the \u003cstrong\u003elatest Bruce release\u003c\/strong\u003e via the official web flasher and the chips come up reliably.\u003c\/p\u003e\n\u003cp\u003eIf it still fails after a clean flash, re-seat the M2 screws and confirm both SMA jacks are on the correct radio. The 2.4 GHz antenna goes on NRF24, the 433 MHz antenna on CC1101.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"peq-faq__item\"\u003e\n\u003csummary\u003e\u003cspan class=\"peq-faq__q\"\u003eQ.02\u003c\/span\u003e \u003cspan\u003eWhich menu entry do I pick in Bruce — \"CC1101\" or \"CC1101 (Legacy)\"?\u003c\/span\u003e \u003cspan class=\"peq-faq__sign\"\u003e+\u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"peq-faq__answer\"\u003e\n\u003cp\u003eUse the \u003cstrong\u003e(Legacy)\u003c\/strong\u003e driver entries for both chips. The non-legacy modes target a different driver path used by other M5Stack builds and won't recognize this board.\u003c\/p\u003e\n\u003cdiv class=\"peq-faq__cmd\"\u003eRF → Config → Module → \u003cstrong\u003eCC1101 (Legacy)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"peq-faq__cmd\"\u003eRF → Config → Module → \u003cstrong\u003eNRF24 (Legacy)\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"peq-faq__item\"\u003e\n\u003csummary\u003e\u003cspan class=\"peq-faq__q\"\u003eQ.03\u003c\/span\u003e \u003cspan\u003eDoes Bruce officially support the M5Stack StickS3?\u003c\/span\u003e \u003cspan class=\"peq-faq__sign\"\u003e+\u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"peq-faq__answer\"\u003e\n\u003cp\u003eYes — \u003ccode\u003em5stack-sticks3\u003c\/code\u003e is an upstream board target in the BruceDevices\/firmware repo. Several StickS3-specific fixes (PSRAM detection, audio init, boot backlight) landed in late 2025 and early 2026 — issues #2371 and #2148. Use the latest stable build, not an older cached binary, to pick those fixes up.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"peq-faq__item\"\u003e\n\u003csummary\u003e\u003cspan class=\"peq-faq__q\"\u003eQ.04\u003c\/span\u003e \u003cspan\u003eI have a StickC Plus or a Cardputer — will this fit?\u003c\/span\u003e \u003cspan class=\"peq-faq__sign\"\u003e+\u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"peq-faq__answer\"\u003e\n\u003cp\u003eNo. RF Pack S3 is dedicated to the StickS3 footprint and pin order. For other M5Stack hosts, use the matching SKU:\u003c\/p\u003e\n\u003cp\u003eStickC Plus 1.1 \/ Plus 2 → \u003cstrong\u003eStick-RF 424\u003c\/strong\u003e. Cardputer ADV → \u003cstrong\u003eHydra RF Cap\u003c\/strong\u003e series. Buying the wrong host pairing is the most common return reason on this category — verify the model on the back of your device before ordering.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003cp class=\"peq-compliance\"\u003eFor protocol research, signal analysis, and electronics education only. End users are responsible for compliance with local radio regulations — FCC Part 15 (US), ISED RSS-Gen \/ RSS-247 (Canada), RED 2014\/53\/EU (EU\/UK), MIC Radio Law (Japan), and equivalent. Operating PA-amplified transmitters in regulated spectrum without proper authorization may be unlawful in your jurisdiction. PINGEQUA does not authorize use of this product for jamming, unauthorized interception, or any unlicensed transmission.\u003c\/p\u003e\n\u003c\/div\u003e","brand":"PINGEQUA","offers":[{"title":"Default Title","offer_id":40920625184832,"sku":"S3-RFPACK","price":28.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0595\/6753\/8240\/files\/16.jpg?v=1773888499","url":"https:\/\/www.pingequa.com\/products\/m5stack-stick-s3-rf-pack-s3-v1-black","provider":"PINGEQUA","version":"1.0","type":"link"}