1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta name="description" content="HeyBLU Help â keys to success, video tutorials, and searchable answers for setup and troubleshooting."> 7 <title>Help â HeyBLU</title> 8 <link rel="canonical" href="https://heyblu.ai/help"> 9 <meta property="og:type" content="website"> 10 <meta property="og:url" content="https://heyblu.ai/help"> 11 <meta property="og:title" content="HeyBLU Help"> 12 <meta property="og:description" content="One page for setup, Pro iPhone fixes, and troubleshooting. Video tutorials linked separately."> 13 <link rel="icon" type="image/x-icon" href="/images/heyblu-favicon.ico"> 14 <link rel="icon" type="image/svg+xml" href="/images/HeyBLU vector logo.svg"> 15
15<script src="https://cdn.tailwindcss.com"></script>
15 16 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet"> 17 <style> 18 body { font-family: 'Inter', sans-serif; background: #f8fafc; color: #1e293b; } 19 .help-section, .faq-item { scroll-margin-top: 100px; } 20 .faq-button[aria-expanded="true"] { color: #2563eb; } 21 .faq-icon { transition: transform 0.2s ease; } 22 .faq-button[aria-expanded="true"] .faq-icon { transform: rotate(180deg); } 23 #faq-search-results:not(.hidden) { box-shadow: 0 10px 25px rgba(15, 23, 42, 0.12); } 24 </style> 25
25<script src="/posthog-init.js"></script>
25 26
26<script src="/utm-capture.js"></script>
26 27
27<script defer src="/_vercel/insights/script.js"></script>
27 28
28<script defer src="/site-analytics.js"></script>
28 29</head> 30<body class="min-h-screen flex flex-col pt-16"> 31 32<header id="heyblu-site-header" class="bg-white/95 backdrop-blur-lg fixed top-0 left-0 right-0 z-50 shadow-sm"> 33 <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> 34 <div class="flex justify-between items-center py-4"> 35 <a href="/" class="flex items-center space-x-3"> 36 <img src="/images/HeyBLU%20-%20black-blue%20vector%20logo5.svg" alt="HeyBLU" class="h-10 md:h-13 w-auto max-w-[200px]" loading="eager" fetchpriority="high"> 37 </a> 38 <nav class="hidden md:flex items-center space-x-6" aria-label="Main"> 39 <a href="/#how-it-works" class="text-gray-700 hover:text-blue-600 font-medium transition">How It Works</a> 40 <a href="/#playbook" class="text-gray-700 hover:text-blue-600 font-medium transition">Use Cases</a> 41 <a href="/pricing" class="text-gray-700 hover:text-blue-600 font-medium transition">Pricing</a> 42 <a href="/help" class="text-blue-600 font-semibold transition" aria-current="page">Help</a> 43 <a href="https://apps.apple.com/app/apple-store/id6479205383?pt=126940554&ct=Home%20Page&mt=8" class="app-store-download-link bg-blue-600 text-white font-bold py-2 px-6 rounded-lg hover:bg-blue-700 transition transform hover:scale-105" target="_blank" rel="noopener noreferrer">Download</a> 44 </nav> 45 <button type="button" id="menu-btn" class="md:hidden text-gray-900 hover:text-blue-600" aria-expanded="false" aria-controls="mobile-menu" aria-label="Open menu"> 46 <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"/></svg> 47 </button> 48 </div> 49 <div id="mobile-menu" class="hidden md:hidden pb-4 space-y-2"> 50 <a href="/#how-it-works" class="block py-2 px-4 text-gray-700 hover:bg-gray-100 rounded">How It Works</a> 51 <a href="/#playbook" class="block py-2 px-4 text-gray-700 hover:bg-gray-100 rounded">Use Cases</a> 52 <a href="/pricing" class="block py-2 px-4 text-gray-700 hover:bg-gray-100 rounded">Pricing</a> 53 <a href="/help" class="block py-2 px-4 text-blue-600 font-semibold bg-blue-50 rounded">Help</a> 54 <a href="https://apps.apple.com/app/apple-store/id6479205383?pt=126940554&ct=Home%20Page&mt=8" class="app-store-download-link block py-2 px-4 text-gray-700 hover:bg-gray-100 rounded" target="_blank" rel="noopener noreferrer">Download</a> 55 </div> 56 </div> 57 </header> 58
58<script src="/site-nav.js"></script>
58 59 60 <main class="flex-grow max-w-3xl mx-auto px-4 sm:px-6 py-6 w-full"> 61 62 <div class="flex flex-col sm:flex-row sm:items-center sm:gap-4 mb-4"> 63 <h1 class="text-2xl font-bold text-slate-900 shrink-0"> 64 <span class="text-blue-600">Hey</span>BLU Help 65 </h1> 66 <div class="relative flex-1 mt-3 sm:mt-0"> 67 <label for="faq-search-input" class="sr-only">Search help</label> 68 <input type="search" id="faq-search-input" placeholder="Search â e.g. plate moved, hotspot, calibrateâ¦" autocomplete="off" class="w-full rounded-xl border-2 border-slate-200 bg-white px-4 py-2.5 text-base text-slate-900 placeholder:text-slate-400 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-200"> 69 <div id="faq-search-results" class="hidden absolute left-0 right-0 top-full z-50 mt-1 overflow-hidden rounded-xl border border-slate-200 bg-white" aria-hidden="true" role="listbox"></div> 70 </div> 71 </div> 72 73 <div class="flex flex-wrap gap-3 mb-5"> 74 <a href="/how-to" class="inline-flex items-center gap-2 rounded-lg border-2 border-green-300 bg-green-50 px-4 py-2.5 font-semibold text-slate-900 hover:bg-green-100 transition text-sm"> 75 <span>â¶</span> Video Tutorials 76 </a> 77 <a href="#pro-iphone" class="inline-flex items-center gap-2 rounded-lg border-2 border-blue-300 bg-blue-50 px-4 py-2.5 font-semibold text-slate-900 hover:bg-blue-100 transition text-sm" onclick="setTimeout(function(){var el=document.getElementById('pro-iphone'); if(!el) return; var b=el.querySelector('.faq-button'); if(b && b.getAttribute('aria-expanded')!=='true') toggleFaq(b);}, 50);"> 78 Pro iPhone help 79 </a> 80 <a href="#problems" class="inline-flex items-center gap-2 rounded-lg border-2 border-amber-300 bg-amber-50 px-4 py-2.5 font-semibold text-slate-900 hover:bg-amber-100 transition text-sm"> 81 Something went wrong 82 </a> 83 </div> 84 85 <section id="ideal-setup" class="mb-8"> 86 <div class="bg-slate-900 text-white rounded-xl px-5 py-4"> 87 <p class="font-semibold mb-3">Ideal setup</p> 88 <ol class="text-sm space-y-2 text-slate-200 list-decimal list-inside"> 89 <li><strong class="text-white">Outdoors, daylight</strong></li> 90 <li><strong class="text-white">Mount your iPhone</strong> (tripod or fence clip). After lock, the iPhone must not move â a bump, wind, or pan can ruin the rest of the session.</li> 91 <li><strong class="text-white">Distance and angle:</strong> about 12 feet back, 12 feet offset â in line with a foul line. <a href="#tripod-diagram" class="text-blue-300 underline hover:text-blue-200 diagram-link">See diagram â</a></li> 92 <li><strong class="text-white">Scan:</strong> slow and steady</li> 93 <li><strong class="text-white">Full pitch path:</strong> plate and mound on or just inside the red lines. Plate near the bottom of the screen. Room above the strike zone for high pitches.</li> 94 <li><strong class="text-white">Test:</strong> throw 2â4 warm-up pitches; use <strong class="text-white">Calibrate</strong> if needed</li> 95 </ol> 96 <div id="tripod-diagram" class="hidden mt-3 scroll-mt-28" hidden> 97 <div class="flex justify-end mb-2"> 98 <button type="button" class="diagram-close text-sm font-semibold text-blue-300 hover:text-white underline">Close diagram</button> 99 </div> 100 <img src="/images/tripod-placement-offset.png" alt="Tripod placement: 3 to 5 long strides from home plate, in line with a foul line â avoid under 25° offset behind the plate" class="w-full max-w-xl mx-auto rounded-lg border border-slate-700 bg-white" width="1536" height="1024" loading="lazy"> 101 </div> 102 </div> 103 </section> 104 105 <section id="setup" class="mb-10"> 106 <h2 class="text-lg font-bold text-slate-900 mb-3">First-time setup tips</h2> 107 <ol class="list-decimal space-y-3 text-sm text-slate-700 bg-white rounded-xl border border-slate-200 px-5 py-4 mb-4 ml-1"> 108 <li class="pl-1"><strong>Set up the tripod first.</strong> About 4 long strides from home plate, in line with one of the foul lines (example: 12 feet back and 12 feet to the side). <a href="/how-to#tripod-placement" class="text-blue-600 underline">Watch â</a> · <a href="#tripod-diagram" class="text-blue-600 underline diagram-link">Diagram â</a></li> 109 <li class="pl-1"><strong>Clear home plate</strong> â ask players to stand clear before you scan.</li> 110 <li class="pl-1"><strong>Scan slow and steady</strong>
110, always keeping home plate in view. <a href="/how-to#scan-phase" class="text-blue-600 underline">Watch â</a></li> 111 <li class="pl-1"><strong>Walk to the tripod slowly</strong>, still keeping home plate in view.</li> 112 <li class="pl-1"><strong>Mount the iPhone carefully.</strong> Avoid shake. Keep fingers off the lens.</li> 113 <li class="pl-1"><strong>Frame the pitch path.</strong> Pan so the blue strike zone sits on one red line and the pitcherâs mound on the other. HeyBLU only tracks between the red lines â it needs the full pitch. 114 <ul class="list-disc list-inside mt-2 ml-2 text-slate-600 space-y-1"> 115 <li>Home plate near the bottom of the screen</li> 116 <li>Room at the top for high pitches</li> 117 </ul> 118 </li> 119 <li class="pl-1"><strong>Tap Adjust Plate</strong> to confirm the blue plate is still on the real home plate. 120 <ul class="list-disc list-inside mt-2 ml-2 text-slate-600 space-y-1"> 121 <li><strong>Pro iPhones</strong> â if the zone âran away,â tap the pulsing distance card (bottom right). Enter real distance to the plate and lens height from the ground. Finger-slide the blue zone and plate back onto the real plate. Then tap <strong>Adjust Plate</strong> for a final check. <a href="#pro-iphone" class="text-blue-600 underline">Pro fix â</a></li> 122 </ul> 123 </li> 124 <li class="pl-1"><strong>Throw 2â4 test or warm-up pitches.</strong> If two pitches miss in the same direction, <strong>Calibrate</strong> fixes the next one.</li> 125 <li class="pl-1"><strong>Play Ball</strong> starts your session.</li> 126 </ol> 127 128 <div class="bg-white rounded-xl border border-slate-200 px-5 py-4"> 129 <h3 class="font-semibold text-slate-900 mb-3">Additional tips</h3> 130 <ol class="list-decimal space-y-2 text-sm text-slate-700 ml-1"> 131 <li class="pl-1">To hear calls from anywhere on the field, set up a Bluetooth speaker <strong>before</strong> opening HeyBLU.</li> 132 <li class="pl-1">Donât want to keep a pitch? Use the on-screen delete control.</li> 133 <li class="pl-1">Tracking different pitchers? Add them on screen, or during setup.</li> 134 <li class="pl-1">Coach from the mound or dugout? Connect a second device (iPad or iPhone). Put both on a shared WiâFi that isnât either phoneâs Personal Hotspot â Personal Hotspot sharing between the two main devices doesnât work. Tracking and Following devices: Airplane Mode on, then WiâFi on, join that shared network.</li> 135 <li class="pl-1">Live batting practice? Use <strong>Live At Bats</strong> during setup. Consider turning off âBallâ calls so swings arenât announced as balls.</li> 136 </ol> 137 </div> 138 </section> 139 140 141 <section id="problems" class="help-section mb-10"> 142 <h2 class="text-lg font-bold text-slate-900 mb-3">Something went wrong</h2> 143 <div class="bg-white rounded-xl border border-slate-200 overflow-hidden shadow-sm"> 144 <div class="faq-item" data-keywords="not working no calls bad calls setup mistakes common problems troubleshoot why camera distance angle scan"> 145 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 146 <span class="font-semibold text-slate-900">Did the setup steps but still not getting calls â what to check</span> 147 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 148 </button> 149 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 150<p class="mb-3 text-sm">Any one of these is enough to cause bad calls or no calls at all:</p> 151 <ul class="space-y-2 text-sm"> 152 <li>ð <strong>Camera too close or too far</strong> â target is 10â15 ft from the plate. Under 10 ft or past 20 ft and detection breaks down.<
152/li> 153 <li>ð <strong>Camera angle off</strong> â aim for ~45° offset from the pitch line, roughly in line with a foul line. Less than ~20° offset and inside/outside accuracy degrades. Too far offset (past ~50° or beyond the foul line) and BLU won't see the entire pitch.</li> 154 <li>ð <strong>Home plate not visible in frame</strong> â the real plate must be in the camera view throughout the session.</li> 155 <li>ð <strong>Proper use of the red line guides when placing the iPhone in the tripod mount</strong> â the pitch path should run between the two red lines, with the mound along one and the strike zone along the other. Don't put the strike zone in the exact middle of the screen â BLU won't see the entire pitch.</li> 156 <li>â¬ï¸ <strong>Strike zone too high in frame</strong> â if the top of the zone is near the top of the screen, high pitches clip off. Lower the camera or adjust distance and reframe so the camera can see home plate, and just high enough above the strike zone to see high pitches.</li> 157 <li>ð <strong>Fast or shaky scan</strong> â a quick or jerky scan gives the app a poor 3D map. Move slowly and steadily for ~30 seconds. If you see the strike zone move or shake after setup, your scan was likely too fast or shaky and needs to be redone.</li> 158 <li>ð§ <strong>People near the plate during the scan</strong> â a batter, catcher, or coach walking through the scene during scanning is a common cause of bad calls throughout the session. Scan with no one present.</li> 159 <li>ðµ <strong>Indoor cage or nighttime</strong> â the app requires outdoor daylight. Indoor cages and nighttime are outside its current range.</li> 160 <li>ð¢ <strong>Too many calibrations, or one bad one</strong> â each calibration invisibly moves the math used for calls. Use Calibrate selectively. If calls don't improve after one or two attempts, close the app and start fresh with a new scan.</li> 161 <li>ð± <strong>Handheld or shaky mount</strong> â if the camera isn't stationary, calls will degrade over time. Avoid mounting on fences that shake, or using a flimsy tripod on a windy day. Handheld is fine to test a pitch or two, but small movements to you are big movements to the app.</li> 162 <li>ð§ <strong>Fence or tripod in the camera view</strong> â part of the fence or mount crossing into frame can cause blur that throws BLU's tracking off.</li> 163 <li>ð¡ï¸ <strong>Hot phone</strong> â BLU works the camera hard, and a hot phone makes its job much harder. Use shade, a small fan, or the same cooling methods GameChanger parents use to keep a streaming phone cool on hot days.</li> 164 </ul> 165 </div> 166 </div> 167 </div> 168 <div class="border-t border-slate-200 faq-item" data-keywords="glare sun screen bright hard to see scanning mounting sunlight matte anti-glare screen protector 1st base 3rd base side faded plate light dirt"> 169 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 170 <span class="font-semibold text-slate-900">Can't see the screen in bright sun while scanning or mounting</span> 171 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 172 </button> 173 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 174<p class="mb-3">This shows up two ways, and both have the same fix â reposition:</p> 175 <ul class="space-y-2 text-sm mb-3"> 176 <li>âï¸ <strong>Sun high overhead or over your shoulder</strong> â glare on the screen while scanning or confirming <strong>Adjust Plate</strong>. Set up on the <strong>opposite foul line</strong> instead (1st-base â 3rd-base side). Not a magic fix, but the sun hits the screen at more of an angle instead of straight down, and glare eases.</li> 177 <li>ð <strong>Sun low in the sky</strong> â if it's shining straight into the lens at mount, the tripod is facing toward it. Move to the <strong>opposite side of the plate</strong> so the camera faces away from the sun instead of into it.</li> 178 </ul> 179 <p class="mb-3">Glare is worse on fields with an <strong>older, faded home plate</strong> or <strong>light-colored dirt</strong> close to the plate's color â low contrast plus glare makes it hard to tell where the real plate ends and the ground begins.
179</p> 180 <p class="mb-0"><strong>Screen protector:</strong> a <strong>matte/anti-glare</strong> one diffuses sunlight and is easier to read outdoors. Glossy or clear reflects it and makes glare worse.</p> 181 </div> 182 </div> 183 </div> 184 <div id="pro-iphone" class="border-t border-slate-200 faq-item" data-keywords="pro iphone pro max lidar blue plate moved shrank lock walk tripod distance lens height confirm distance measurements slide adjust plate"> 185 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 186 <span class="font-semibold text-slate-900">Pro iPhone: blue plate moved or shrank after lock</span> 187 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 188 </button> 189 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 190 <ol class="list-decimal list-inside space-y-2"> 191 <li>Tap the pulsing distance number â enter real <strong>camera-to-plate</strong> and <strong>lens height</strong> (tape measure).</li> 192 <li>Finger-slide the blue plate/zone back onto the real plate.</li> 193 <li>If itâs almost on but not flush â <strong>Adjust Plate</strong>.</li> 194 </ol> 195 </div> 196 </div> 197 <div class="border-t border-slate-200 faq-item" data-keywords="wrong call decision tree fix bad call playbook all outside all inside all high all low zone size bullpen mode rescan random calls"> 198 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 199 <span class="font-semibold text-slate-900">A call was clearly wrong â decision guide</span> 200 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 201 </button> 202 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 203<dl class="space-y-3"> 204 <div> 205 <dt class="font-semibold text-slate-800">Every pitch in one direction (all inside, all outside, all high, all low)?</dt> 206 <dd class="ml-4 mt-1">â Use <strong>9-zone Calibrate</strong> after your next clean non-swing pitch.</dd> 207 </div> 208 <div> 209 <dt class="font-semibold text-slate-800">Blue plate has drifted off the real plate?</dt> 210 <dd class="ml-4 mt-1">â Use <strong>Adjust Plate</strong> to slide it back, then test with a pitch before calibrating.</dd> 211 </div> 212 <div> 213 <dt class="font-semibold text-slate-800">Calls seem consistently too high, low, inside, or outside â even after calibrating?</dt> 214 <dd class="ml-4 mt-1">â A zone that's too small will get more "Ball" calls; one too large will get too many "Strike" calls. <strong>Check zone size</strong>: gear icon â zone size.</dd> 215 </div> 216 <div> 217 <dt class="font-semibold text-slate-800">Only swung-at pitches are wrong; non-swings are accurate?</dt> 218 <dd class="ml-4 mt-1">â You're in <strong>Bullpen mode</strong> during live at-bats. Switch to Live At Bats mode on the next session.</dd> 219 </div> 220 <div> 221 <dt class="font-semibold text-slate-800">Calls were fine, then a few in a row went off, then fine again?</dt> 222 <dd class="ml-4 mt-1">â After a long idle, the phone's position sense can shift. One
222<strong>Adjust Plate</strong> or <strong>Calibrate</strong> correction usually stabilizes the session.</dd> 223 </div> 224 <div> 225 <dt class="font-semibold text-slate-800">Nothing above applies and calls seem random?</dt> 226 <dd class="ml-4 mt-1">â <strong>Redo the scan.</strong> Close the app, clear the plate area, walk slowly around home plate for 20â30 seconds, re-place the zone, and start a new session.</dd> 227 </div> 228 </dl> 229 </div> 230 </div> 231 </div> 232 <div class="border-t border-slate-200 faq-item" data-keywords="no call silent missed pitch not tracking blocked catcher net detections MPH speed no dot no location"> 233 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 234 <span class="font-semibold text-slate-900">No call on a pitch â or MPH shows but no location dot</span> 235 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 236 </button> 237 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 238<p class="mb-3">HeyBLU stays silent rather than guessâit needs a clean, unobstructed look at enough of the pitch to calculate exactly where it crossed the plate. Speed can be measured from less of the flight than location can, which is why you may see MPH show up without a location or a ball/strike call.</p> 239 <p class="mb-3">Most common causes: camera more than 12â15 ft from the plate, ball blocked mid-flight (catcher, batter, net), or pitch path outside the <a href="#red-lines-strike-zone" class="text-blue-600 hover:text-blue-800 font-medium">red-line framing window</a>.</p> 240 <p class="mb-0"><strong>Fix:</strong> Move camera to 10â12 ft. Check red-line framing. See also: <a href="#left-handed-batter" class="text-blue-600 hover:text-blue-800 font-medium">batter blocking the view</a>.</p> 241 </div> 242 </div> 243 </div> 244 <div class="border-t border-slate-200 faq-item" data-keywords="tracking unstable check camera drift mount tripod bump scan"> 245 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 246 <span class="font-semibold text-slate-900">Why does it say "Tracking unstable" or "Check camera"?</span> 247 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 248 </button> 249 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 250<p class="mb-3">The app detects if the phone has moved since you locked in the zoneâthat's "drift." A thin or rushed scan can make drift worse, but bumps after <strong>mounting</strong> are a frequent cause too. <a href="#setup" class="text-blue-600 hover:text-blue-800 font-medium">First-time setup â</a></p> 251 <p class="mb-3">After placing the zone, minimize movement; mount without bumping the tripod. If calls look consistently biased after a stable mount, use <strong>Calibrate</strong> on the primary device.</p> 252 <p class="font-semibold text-green-600">Fix: Check that the mount is tight and nothing moved. Tighten the mount, avoid bumping the tripod, and on windy days consider weighing it down or moving to a sheltered spot.</p> 253 </div> 254 </div> 255 </div> 256 <div class="border-t border-slate-200 faq-item" data-keywords="calibrate c
256alibration outside inside wrong call strike ball 9 zone grid adjust heyblu"> 257 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 258 <span class="font-semibold text-slate-900">Why is every call "outside" (or "inside") when it looks like a strike?</span> 259 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 260 </button> 261 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 262<p class="mb-3">Tap the on-screen <strong>Calibrate</strong> button after a test pitch, then move the yellow dot to where the ball actually crossed. That corrects a mismatch between where the app thinks the plate is and where it physically is.</p> 263 <p class="mb-0"><strong>Adjust HeyBLU</strong> (Inside/Outside) under <strong>Settings</strong> (gear icon) provides a settings-level nudge if needed, but Calibrate is the primary tool.</p> 264 </div> 265 </div> 266 </div> 267 <div id="left-handed-batter" class="border-t border-slate-200 faq-item" data-keywords="left handed lefty batter no call same side first base third base camera blocked obstruction LHB"> 268 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 269 <span class="font-semibold text-slate-900">No calls when the batter is on the same side as the camera</span> 270 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 271 </button> 272 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 273<p class="mb-3">A batter standing in the box on the same side of the plate as the camera can block the camera's view of part of the pitch as it nears the plate. HeyBLU's recommended camera position is the <strong>1st-base side</strong>, so this most often shows up with <strong>left-handed batters</strong> (only about 10% of batters)âbut the real cause is which side the batter is standing on, not handedness.</p> 274 <p class="mb-0"><strong>Fix:</strong> Shoot from the recommended <strong>~45° offset</strong> from the pitch line, not head-on. That angle keeps most of the pitch path visible even with a batter blocking part of the view.</p> 275 </div> 276 </div> 277 </div> 278 <div class="border-t border-slate-200 faq-item" data-keywords="2 feet outside wrong call batted ball contact grounder live at bats contamination swing hit"> 279 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 280 <span class="font-semibold text-slate-900">Call was way off â "2 feet outside" on a pitch down the middle</span> 281 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 282 </button> 283 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 284<p class="mb-3">Usually a batted-ball contamination problem. When a batter makes contactâeven a dribblerâthe ball's new path gets mixed into the pitch's calculated path, shifting the call by a foot or two even though the pitch itself tracked correctly up to contact.</p> 285 <p class="mb-0"><strong>Fix:</strong> Confirm <strong>Live At Bats</strong> was selected on the session setup screenâBullpen mode is more likely to track the contact instead of the pitch. Still consistently off after switching? <strong>Calibrate</strong> on a clean, non-contact pitch, or rescan.</p> 286 </div> 287 </div> 288 </div> 289 <div class="border-t border-slate-200 faq-item" data-keywords="phantom pitch counted nothing thrown throwback catcher fake pitch false detection trash delete"> 290 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false">
291 <span class="font-semibold text-slate-900">A pitch was counted when nothing was thrown</span> 292 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 293 </button> 294 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 295<p class="mb-3">The app tracks any fast-moving ball-shaped object in frame. A catcher's throwback can occasionally look enough like a pitchâespecially at longer camera distances (18+ feet) where the ball is smaller and direction checks are less reliable.</p> 296 <p class="mb-3"><strong>Prevention:</strong> Camera at 10â12 feet. At that distance the ball is large enough that direction is highly accurate and most throwbacks are filtered out.</p> 297 <p class="mb-0"><strong>Fix after it happens:</strong> Tap the trash icon on the pitch card to delete it. This automatically updates the Command Center count.</p> 298 </div> 299 </div> 300 </div> 301 <div class="border-t border-slate-200 faq-item" data-keywords="calibrating over over doesn't fix bad calls plate position distance batted ball wrong"> 302 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 303 <span class="font-semibold text-slate-900">Calibrating over and over isn't fixing bad calls</span> 304 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 305 </button> 306 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 307<p class="mb-3">Calibration corrects a plate position mismatchâthat's all it does. Most persistent bad calls come from something else: a bad scan (especially if people were near the plate during setup), camera too far away, batted-ball contamination, or the phone shifting after mounting.</p> 308 <p class="mb-3">If you've calibrated <strong>3 or more times</strong> and calls are still off, stop calibrating. The best fix at that point is to <strong>close the app completely, move everyone away from the plate, and start with a fresh scan.</strong> Check camera distance. Make sure <strong>Live At Bats</strong> is selected if batters are in the box.</p> 309 <p class="mb-0">Each calibration to a bad pitch shifts the plate further from the correct positionâmore calibrations make a bad scan worse, not better.</p> 310 </div> 311 </div> 312 </div> 313 <div class="border-t border-slate-200 faq-item" data-keywords="dirt field bad calls rescan all-dirt infield low contrast unstable calls session scan"> 314 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 315 <span class="font-semibold text-slate-900">Calls are inconsistent on an all-dirt or low-contrast field</span> 316 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 317 </button> 318 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 319<p class="mb-3">Fields with little visual contrastâlike an all-dirt infieldâgive the app less to anchor to, so the phone's position sense can drift over time, especially during long idle periods between pitches. The result is calls that are off even with good framing and a solid initial scan.</p> 320 <p class="mb-0"><strong>Fix:</strong> Re-scan more frequently than you would on a grass field. If calls start drifting mid-session, a quick <strong>Calibrate</strong> on a clean pitch often stabilizes things. For stubborn drift, end the session, move everyone away from the plate, and start fresh.</p> 321 </div> 322 </div> 323 </div> 324 <div class="border-t border-slate-200 faq-item" data-keywords="wifi hotspot android router won't connect follow game command center"> 325 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false">
326 <span class="font-semibold text-slate-900">Follow Game or Command Center wonât connect</span> 327 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 328 </button> 329 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 330<p class="mb-3"><strong>Fast fix:</strong> Android phone hotspot (no SIM needed) or a small travel routerâboth iPhones join it.</p> 331 <p class="mb-0">Full walkthrough: <a href="#connect-two-devices-faq" class="text-blue-600 hover:text-blue-800 font-medium">Connect two devices â</a></p> 332 </div> 333 </div> 334 </div> 335 </div> 336 </section> 337 <section id="setup-detail" class="help-section mb-10"> 338 <h2 class="text-lg font-bold text-slate-900 mb-3">Setup details</h2> 339 <div class="bg-white rounded-xl border border-slate-200 overflow-hidden shadow-sm"> 340 <div class="faq-item" data-keywords="setup scan mount tripod play ball first time calibrate red lines"> 341 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 342 <span class="font-semibold text-slate-900">What do I need to do before I can get a call?</span> 343 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 344 </button> 345 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 346<p class="mb-3 font-semibold text-orange-600">Do not skip these steps:</p> 347 <ol class="list-decimal list-inside space-y-3 ml-2"> 348 <li><strong>Scan the area:</strong> Follow the in-app instructions and move slowly so the app can build a solid 3D map. <strong>Scan with no one near the plate</strong>âa batter, catcher, or umpire walking through the scene during the scan is a common cause of bad calls throughout the session. <a href="#setup" class="text-blue-600 hover:text-blue-800 font-medium">First-time setup â</a></li> 349 <li><strong>Place the zone:</strong> This is <strong>initial placement only</strong>: line up the virtual strike zone with the <strong>real home plate</strong> (on or just above the dish), matching position and angle as closely as you can. Try not to bump the phone or plate while the zone is setâyou will mount next, then adjust the <strong>camera view</strong> on Mount & Verify.</li> 350 <li><strong>Mount and realign:</strong> Mount on the tripodâ<strong>expect the zone to shift</strong>. Set tripod height about <a href="#tripod-height" class="text-blue-600 hover:text-blue-800 font-medium">mid-zone</a> (see real plate and highest expected pitch in frame). Slide the zone onto the plate, use Distance/Height or Up/Down for size, use <strong>Adjust Plate</strong> for overhead alignment; on <strong>Pro iPhones</strong> enter measured distance and lens height. Keep the full pitch path between the <strong>red lines</strong> (see <a href="#red-lines-strike-zone" class="text-blue-600 hover:text-blue-800 font-medium">wrong and correct placements</a>). If you see drift or unstable tracking, check that the mount is tight and nothing moved.</li> 351 <li><strong>Calibrate:</strong> Tap <strong>Play Ball</strong>, throw a test pitch if the call looks off, then tap <strong>Calibrate</strong> and move the yellow dot to where the pitch actually crossed. <a href="#setup" class="text-blue-600 hover:text-blue-800 font-medium">First-time setup â</a></li> 352 <li><strong>Tap "Play Ball":</strong> HeyBLU calls pitches once you're tracking live (use <strong>Pause, Warm Up</strong> anytime you need to stop).</li> 353 </ol> 354 <p class="mt-3 text-sm text-slate-600"><strong>Note:</strong> After End Session you can review pitches (pitch count and step through calls).</p> 355 </div> 356 </div> 357 </div> 358 <div id="red-lines-strike-zone" class="border-t border-slate-200 faq-item" data-keywords="red lines framing frame pitch path mount verify roi detection window"> 359 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false">
360 <span class="font-semibold text-slate-900">What are the red lines, and where should the strike zone sit?</span> 361 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 362 </button> 363 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 364<p class="mb-4">On <strong>Mount & Verify</strong>, the two thick vertical <strong>red</strong> lines mark the sideways detection window. Center the <strong>pitch path</strong> between them: put the blue strike zone on <strong>one red line</strong> (plate edge) and keep the <strong>mound visible beside the other</strong>. Do not center the zone between the red lines.</p> 365 <figure class="mb-0"> 366 <p class="mb-2 text-sm text-slate-600 rounded-md bg-slate-50 border border-slate-200 px-3 py-2">The diagram below may still say <strong>cyan</strong> in a few labels from an older captureâread <strong>red</strong>; the wrong vs correct <em>placement</em> is what matters.</p> 367 <img src="/images/framed-red-zone-faq.jpg" alt="Wrong: zone centered between red ROI lines. Correct: plate on one red line and mound on the other, full pitch path inside the window." class="rounded-lg border border-slate-200 w-full max-w-3xl h-auto" loading="lazy" decoding="async"> 368 <figcaption class="mt-2 text-sm text-slate-500">Wrong vs correct framing. Vertical guides in the app are <strong>red</strong>.</figcaption> 369 </figure> 370 </div> 371 </div> 372 </div> 373 <div id="tripod-height" class="border-t border-slate-200 faq-item" data-keywords="tripod height mount camera lens mid zone mid-zone batter strike zone top bottom distance home plate high pitch framing lowest highest"> 374 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 375 <span class="font-semibold text-slate-900">How high should the tripod be?</span> 376 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 377 </button> 378 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 379<p class="mb-3">Set the iPhone on the tripod so the camera sits about <strong>mid-zone</strong>âroughly half the height of your typical batterâs strike zone. That usually means <strong>lower than most people expect</strong>.</p> 380 <p class="mb-3">Stay within the zone vertically: <strong>minimum</strong> height is the bottom of the zone; <strong>maximum</strong> is the top of the zone. Mid-zone is the target.</p> 381 <p class="mb-3">When you pick distance and height, check the live camera view before <strong>Play Ball</strong>. You need to see the <strong>real home plate</strong> and enough room above the plate for the <strong>highest pitch</strong> you expect that session. If high pitches clip off screen, lower the camera, adjust distance, and reframe the pitch path between the <a href="#red-lines-strike-zone" class="text-blue-600 hover:text-blue-800 font-medium">red lines</a>.</p> 382 <p class="mb-0"><strong>Pro iPhone:</strong> after you mount, enter measured camera-to-plate distance and lens height from the ground in the app.</p> 383 </div> 384 </div> 385 </div> 386 <div class="border-t border-slate-200 faq-item" data-keywords="mound distance pitching distance 38 feet 46 feet setting app detection window camera distance plate"> 387 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false">
388 <span class="font-semibold text-slate-900">Does the mound distance setting affect call accuracy?</span> 389 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 390 </button> 391 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 392<p class="mb-3">The mound distance setting adjusts an internal detection window â it tells the app roughly where to start looking for the ball in flight. It does <strong>not</strong> affect plate-crossing accuracy.</p> 393 <p class="mb-0">What does affect call quality: <strong>camera-to-plate distance</strong> (target: 10â12 ft) and <strong>camera angle</strong> (target: ~45° from the pitch line). The pitcher can be at 38 ft or 60 ft â those don't change what the camera needs to do at the plate end.</p> 394 </div> 395 </div> 396 </div> 397 <div class="border-t border-slate-200 faq-item" data-keywords="adjust plate vs calibrate 9 zone nine zone when to use overhead bird's eye slide plate position"> 398 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 399 <span class="font-semibold text-slate-900">When should I use Adjust Plate vs. the 9-zone Calibrate tool?</span> 400 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 401 </button> 402 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 403<p class="mb-3">They fix different problems:</p> 404 <p class="mb-2"><strong>Adjust Plate</strong> â the blue plate overlay has drifted off the real plate. Tap Adjust Plate for a bird's-eye overhead view and use the arrows to slide it back. This moves the plate and zone together. <em>Use this first whenever the zone looks out of position.</em></p> 405 <p class="mb-3"><strong>9-Zone Calibrate</strong> â the blue plate looks correct visually, but calls land in the wrong spot (e.g., every pitch reads outside when it's down the middle). After a pitch, tap Calibrate and move the yellow dot to where the ball actually crossed. This fine-tunes the math without moving what you see on screen.</p> 406 <p class="mb-0 font-medium">Quick rule: blue box off the plate â Adjust Plate. Blue box looks right but calls are wrong â Calibrate.</p> 407 </div> 408 </div> 409 </div> 410 <div class="border-t border-slate-200 faq-item" data-keywords="calibrate rules when not to calibrate grayed out apply contact swing batted ball poor data one calibration"> 411 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 412 <span class="font-semibold text-slate-900">Rules for using the 9-zone Calibrate tool</span> 413 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 414 </button> 415 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 416<ul class="list-disc list-inside space-y-3 ml-2 mb-3"> 417 <li><strong>Only calibrate after a non-swing pitch.</strong> If the batter made contact, the app may have tracked the batted ball rather than the pitch. Calibrating to that data moves the zone in the wrong direction.</li> 418 <li><strong>One calibration after a clean pitch is usually enough.</strong> If you calibrate repeatedly and calls keep feeling wrong, calibration isn't solving the real problem â re-scan instead.</li> 419 <li><strong>The Apply button is grayed out if there wasn't enough data from the last pitch.</strong> This is intentional â calibrating from a poor-quality trajectory makes calls less accurate, not more.</li> 420 </ul> 421 <p class="mb-0">See also: <a href="#using" class="text-blue-600 hover:text-blue-800 font-medium">Adjust Plate vs. Calibrate</a>.</p> 422 </div> 423 </div> 424 </div> 425 <div class="border-t border-slate-200 faq-item" data-keywords="detection confidence gear menu setting default 75 phantom fewer calls more calls selective adjust sensitivity"> 426 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false">
427 <span class="font-semibold text-slate-900">What is the "Detection Confidence" setting?</span> 428 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 429 </button> 430 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 431<p class="mb-3">Found in the gear menu. Controls how certain the app needs to be before it counts a moving object as a baseball. <strong>Default is 75 â leave it there unless you have a specific problem.</strong></p> 432 <ul class="list-disc list-inside space-y-2 ml-2 mb-3"> 433 <li><strong>Higher (80â85):</strong> more selective, fewer calls but less likely to count non-pitches. Try this if you're getting frequent phantom counts from reflections or background movement.</li> 434 <li><strong>Lower (65â70):</strong> less selective, more calls but more false counts. Try this only if pitches are regularly going uncalled despite a good scan and correct camera placement.</li> 435 </ul> 436 <p class="mb-0">This setting does not reset automatically â if you experiment and calls get worse, go back to 75. Camera distance (10â12 ft) solves most detection problems more reliably than adjusting this setting.</p> 437 </div> 438 </div> 439 </div> 440 </div> 441 </section> 442 <section id="using" class="help-section mb-10"> 443 <h2 class="text-lg font-bold text-slate-900 mb-3">During a session</h2> 444 <div class="bg-white rounded-xl border border-slate-200 overflow-hidden shadow-sm"> 445 <div class="faq-item" data-keywords="live at bats bullpen mode audio ball muted strike silence hitters batter box difference detection"> 446 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 447 <span class="font-semibold text-slate-900">What's the difference between Bullpen and Live At Bats mode?</span> 448 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 449 </button> 450 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 451<p class="mb-3">Choose on the session setup screen before tapping Play Ball.</p> 452 <p class="mb-3"><strong>Bullpen</strong> â No batter in the box. The app tracks every pitch and calls both balls and strikes out loud.</p> 453 <p class="mb-3"><strong>Live At Bats</strong> â Batter is in the box. The app adjusts its detection logic to reduce false counts from swings and contact near the plate. Ball and strike calls still play out loud; toggle ball-call audio off if you'd prefer silence when a batter swings at a pitch outside the zone.</p> 454 <p class="mb-0">If you run Bullpen mode during live at-bats, swings and contact can produce incorrect calls or phantom pitch counts. Always select Live At Bats when hitters are up.</p> 455 </div> 456 </div> 457 </div> 458 <div class="border-t border-slate-200 faq-item" data-keywords="strike zone size age preset adjust resize short tall default zone size wrong calls high low inside outside"> 459 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 460 <span class="font-semibold text-slate-900">What strike zone does HeyBLU use, and how do I adjust the size?</span> 461 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
461<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 462 </button> 463 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 464<p class="mb-3">The zone is fully adjustable. Start with one of the age-level presets, then fine-tune from there. Two ways to adjust during a session:</p> 465 <ul class="list-disc list-inside space-y-2 ml-2 mb-3"> 466 <li><strong>Gear icon</strong> (top right of the live screen) â zone size controls with presets sized for different age groups, plus manual adjustment.</li> 467 <li><strong>After a session ends</strong> â a "Resize Zone" button appears on the post-session screen so you can set the correct size before your next session.</li> 468 </ul> 469 <p class="mb-3">The app remembers the last size you used. With a Command Center device, <strong>Short</strong>, <strong>Default</strong>, and <strong>Tall</strong> presets let you toggle quickly between batter heights during live at-bats.</p> 470 <p class="mb-3 font-medium text-amber-700">If calls seem consistently too high, too low, inside, or outside â check zone size first. A zone that's too small will get more "Ball" calls; one too large will get too many "Strike" calls.</p> 471 <p class="mb-0"><a href="/how-to#strike-zone" class="text-blue-600 hover:text-blue-800 font-medium">Watch: How to adjust the strike zone â</a></p> 472 </div> 473 </div> 474 </div> 475 <div class="border-t border-slate-200 faq-item" data-keywords="pitcher name add roster switch pitcher chip mid-session delete pitcher long press gear remove"> 476 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 477 <span class="font-semibold text-slate-900">How do I track which pitcher threw each pitch?</span> 478 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 479 </button> 480 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 481<p class="mb-3">Add pitchers before or during a session:</p> 482 <ul class="list-disc list-inside space-y-2 ml-2 mb-3"> 483 <li><strong>Before you start</strong> â on the session setup screen (before Track Pitches), tap <strong>+</strong> in the pitcher section to add names.</li> 484 <li><strong>During a session</strong> â tap the pitcher chip bar at the top of the screen to switch pitchers or add a new name.</li> 485 <li><strong>From the Command Center</strong> â the iPad or second iPhone shows the same pitcher list and lets you switch remotely.</li> 486 </ul> 487 <p class="mb-3">Every pitch in the session report and spreadsheet is tagged with the pitcher who threw it. Names are saved to the roster and available next session.</p> 488 <p class="mb-0"><strong>To delete a pitcher:</strong> long-press the name on the main screen, or tap the gear icon and the <strong>â</strong> next to the name.</p> 489 </div> 490 </div> 491 </div> 492 <div class="border-t border-slate-200 faq-item" data-keywords="delete pitch remove trash throwback phantom mistake counted trash icon undo"> 493 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 494 <span class="font-semibold text-slate-900">How do I remove a pitch that was counted by mistake?</span> 495 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
495<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 496 </button> 497 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 498<p class="mb-3">Tap the pitch card at the bottom of the screen after the unwanted pitch appears â a <strong>trash icon</strong> will appear. Tap it to delete. The count updates immediately, and if a Command Center is connected it syncs automatically.</p> 499 <p class="mb-0">Useful when a catcher's throwback or equipment accidentally triggered a count.</p> 500 </div> 501 </div> 502 </div> 503 <div class="border-t border-slate-200 faq-item" data-keywords="command center ipad second phone capabilities live dots count calibrate from ipad pitch history remote switch pitcher"> 504 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 505 <span class="font-semibold text-slate-900">What can the Command Center iPad or iPhone do?</span> 506 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 507 </button> 508 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 509<p class="mb-3">When a second iOS device joins via Share Game, it becomes a Command Center showing:</p> 510 <ul class="list-disc list-inside space-y-2 ml-2 mb-3"> 511 <li>Live pitch dots on the strike zone â color-coded by location</li> 512 <li>Running pitch count, ball count, and strike count</li> 513 <li>Pitcher name with the ability to switch pitchers remotely</li> 514 <li>9-zone Calibrate tool â apply calibrations from the iPad without touching the primary phone</li> 515 <li>Full pitch history for the session</li> 516 </ul> 517 <p class="mb-0">The Command Center is view-and-control â the iPad operator can do nearly everything the primary phone operator can, from wherever the coach is standing. Setting one up for a tryout or game day? See the <a href="/field-kit" class="text-blue-600 hover:text-blue-800 font-medium">Field Kit</a>.</p> 518 </div> 519 </div> 520 </div> 521 <div class="border-t border-slate-200 faq-item" data-keywords="summary spreadsheet export session report image share download end session history heatmap CSV 3D sample"> 522 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 523 <span class="font-semibold text-slate-900">How do I see the session report or export pitch data?</span> 524 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 525 </button> 526 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 527<p class="mb-3">Tap <strong>End Session</strong> â <strong>Summary</strong>. From there:</p> 528 <ul class="list-disc list-inside space-y-2 ml-2 mb-3"> 529 <li><strong>Share as image</strong> â session heatmap and report, easy to text to a parent or coach.</li> 530 <li><strong>3D replay</strong> â tap a pitch for a 3D trajectory replay, or view the whole session in 3D.</li> 531 <li><strong>Export to spreadsheet</strong> â one row per pitch: location, speed, pitcher name, timestamp. Pro feature.</li> 532 <li><strong>Session history</strong> â every past session is saved in the History tab, including a sample report you can open before your first bullpen.</li> 533 </ul> 534 <p class="mb-0">Session history and the sample report are free to browse. Saving real sessions and the spreadsheet export require a HeyBLU subscription.</p> 535 </div> 536 </div> 537 </div> 538 <div id="connect-two-devices-faq" class="border-t border-slate-200 faq-item" data-keywords="wifi wi-fi hotspot android router travel router follow game command center second device local network airplane mode won't connect multiple devices 7/7 share game"> 539 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false">
540 <span class="font-semibold text-slate-900">Follow Game or Command Center wonât connect â what works at the field?</span> 541 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 542 </button> 543 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 544<p class="mb-3"><strong>Single-phone bullpen tracking does not need WiâFi.</strong> Follow Game and Command Center need your Umpire (tracking) iPhone and your second device to find each other. <strong>Standard iOS Personal Hotspot blocks device-to-device communication by default</strong>âsimply joining the same WiâFi or hotspot is not always enough.</p> 545 546 <p class="mb-2 font-semibold text-slate-900">What works (easiest first)</p> 547 <ol class="list-decimal list-inside space-y-2 ml-1 mb-4"> 548 <li><strong>Android phone hotspot</strong> â no SIM or data plan required; both iPhones join it. <strong>Our recommended field setup.</strong></li> 549 <li><strong>Battery travel router</strong> (~$20, e.g. TP-Link TL-WR802N or GLâiNet pocket router) â best for <strong>3+ phones</strong>; all devices join; no internet required.</li> 550 <li><strong>3rd-party iPhone hotspot</strong> (someone elseâs phone) â works <strong>only if</strong> the <strong>Umpire iPhone</strong> (primary) first turns on <strong>Airplane Mode</strong>, then turns <strong>WiâFi back on</strong>, and joins that hotspot before opening Follow Game or Command Center.</li> 551 </ol> 552 553 <p class="mb-2 font-semibold text-red-700">What does <em>not</em> work</p> 554 <ul class="list-disc list-inside space-y-2 ml-1 mb-4"> 555 <li><strong>Umpire iPhone acting as its own hotspot</strong> â the tracking phone cannot host the connection for the second device.</li> 556 <li><strong>Two iPhones on the same iOS Personal Hotspot</strong> without the Airplane Mode + WiâFi step above on the Umpire phone.</li> 557 </ul> 558 559 <p class="mb-2 font-semibold text-slate-900">Before you try again</p> 560 <ul class="list-disc list-inside space-y-2 ml-1 mb-3"> 561 <li><strong>Settings â HeyBLU â Local Network On</strong> on each iPhone.</li> 562 <li>Both devices on a <strong>working</strong> networkâAndroid hotspot or travel router is most reliable.</li> 563 <li>On the tracker: turn on <strong>Share Game</strong> (antenna) <strong>after</strong> all phones are on WiâFi.</li> 564 <li>Open Follow Game or Command Center <strong>after</strong> everyone is connected.</li> 565 </ul> 566 567 <p class="mb-2 font-semibold text-slate-900">Multiple second screens (experimental)</p> 568 <p class="mb-2">One tracking iPhone can share with <strong>up to 7 other devices</strong> (typical: <strong>1 Command Center</strong> + up to <strong>6 Follow Game</strong>). <strong>Follow Game and Command Center can connect at the same time.</strong> The tracker antenna shows <strong>connected/7</strong>. <strong>1â2 screens</strong> are field-tested; <strong>3+</strong> are supported but experimentalâprefer a <strong>travel router</strong>. Use only <strong>one Command Center</strong> for remote control per session.</p> 569 <p class="mb-0 text-sm text-slate-500">Need more detail? See the checklist under <a href="#setup" class="text-blue-600 hover:text-blue-800 font-medium">First-time setup â what to check</a>. Running a tryout or game-day setup? See the <a href="/field-kit" class="text-blue-600 hover:text-blue-800 font-medium">Field Kit</a> for gear and a full playbook.</p> 570 </div> 571 </div> 572 </div> 573 </div> 574 </section> 575 <section id="basics" class="help-section mb-10"> 576 <h2 class="text-lg font-bold text-slate-900 mb-3">Basics & product</h2> 577 <div class="bg-white rounded-xl border border-slate-200 overflow-hidden shadow-sm"> 578 <div class="faq-item"> 579 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false">
580 <span class="font-semibold text-slate-900">What is HeyBLU?</span> 581 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 582 </button> 583 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 584<p>HeyBLU is an iPhone app that turns a mounted phone into a practice umpire. It tracks where each pitch crosses the plate, compares that spot to your strike zone, and calls <strong>Ball</strong> or <strong>Strike</strong> out loud. A HeyBLU subscription saves sessions with heatmaps and reports. See <a href="/pricing" class="text-blue-600 font-medium underline hover:text-blue-800">pricing</a> or our <a href="/compare" class="text-blue-600 font-medium underline hover:text-blue-800">strike zone tech guide</a>.</p> 585 </div> 586 </div> 587 </div> 588 <div class="border-t border-slate-200 faq-item"> 589 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 590 <span class="font-semibold text-slate-900">Does HeyBLU call swings?</span> 591 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 592 </button> 593 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 594<p class="mb-3">No. HeyBLU tracks where the ball crossed the plate, not whether the batter swung. A batter swinging at a pitch that crosses outside the zone is still a ball to HeyBLUâthe game outcome (strike by swing) is separate.</p> 595 <p class="mb-0">Use <strong>Live At Bats</strong> mode when hitters are in the box. See below.</p> 596 </div> 597 </div> 598 </div> 599 <div class="border-t border-slate-200 faq-item"> 600 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 601 <span class="font-semibold text-slate-900">How accurate is HeyBLU?</span> 602 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 603 </button> 604 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 605<p class="mb-3">Our goal was error rates no larger than a ball's width. In pristine conditions we are seeing an average <strong>1.5 inch</strong> miss. In the wildâon your field, while you get used to proper scans and setupâanything over a <strong>3 inch</strong> miss is either an occasional error, or it means you need to re-adjust or re-scan.</p> 606 <p class="mb-3">Accuracy depends a lot on setup. Take your time, get to know the app, and calls become consistent. When you're seeing consistently bad calls, the <a href="#problems" class="text-blue-600 hover:text-blue-800 font-medium">Troubleshooting section</a> covers the most common causes.</p> 607 <p class="mb-0">For velocity accuracy, see <a href="#mph-accuracy" class="text-blue-600 hover:text-blue-800 font-medium">How accurate is the MPH reading?</a></p> 608 </div> 609 </div> 610 </div> 611 <div id="mph-accuracy" class="border-t border-slate-200 faq-item" data-keywords="MPH velocity speed accuracy radar gun pitch speed readings +/- 5 mph approximate"> 612 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false">
613 <span class="font-semibold text-slate-900">How accurate is the MPH reading?</span> 614 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 615 </button> 616 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 617<p class="mb-0">HeyBLU is optimized for pitch location. Speed comes from the same camera, so expect <strong>±5 MPH</strong>âuseful for tracking effort and trends, not a radar-gun substitute.</p> 618 </div> 619 </div> 620 </div> 621 <div class="border-t border-slate-200 faq-item" data-keywords="price pricing cost subscription trial 12.99 79.99 monthly annual follow game"> 622 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 623 <span class="font-semibold text-slate-900">How much does HeyBLU cost?</span> 624 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 625 </button> 626 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 627<p class="mb-3"><strong>HeyBLU</strong> â 14-day free trial, then $12.99/mo or $79.99/yr.</p> 628 <p class="mb-3"><strong>Follow Game</strong> â Non-subscribers can follow along on their own iPhone when a subscriber shares their live feed.</p> 629 <p class="mb-0"><a href="/pricing" class="text-blue-600 font-medium underline hover:text-blue-800">Full pricing â</a> · League pilots: <a href="mailto:[email protected]" class="text-blue-600 font-medium underline hover:text-blue-800">[email protected]</a>.</p> 630 </div> 631 </div> 632 </div> 633 <div class="border-t border-slate-200 faq-item" data-keywords="trial start later reminder bullpen day schedule timer"> 634 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 635 <span class="font-semibold text-slate-900">Can I start my free trial later?</span> 636 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 637 </button> 638 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 639<p class="mb-0">Yes. If you're not at the field yet, pick your next bullpen day in the app and HeyBLU sends one reminder that morning. Your 14-day trial starts only when you tap Start Trial â whenever that is.</p> 640 </div> 641 </div> 642 </div> 643 <div class="border-t border-slate-200 faq-item"> 644 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 645 <span class="font-semibold text-slate-900">What data is recorded? Are kids filmed?</span> 646 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 647 </button> 648 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 649<p class="mb-0">We don't record or store video, and we don't capture or store images. Only data (calls, pitch info, session stats) is used to improve the app. Your kids are not being filmed or photographed.</p> 650 </div> 651 </div> 652 </div> 653 <div class="border-t border-slate-200 faq-item"> 654 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false">
655 <span class="font-semibold text-slate-900">What phones are supported?</span> 656 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 657 </button> 658 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 659<p class="mb-3"><strong>Non-Pro iPhones are ideal</strong> for bullpen setup (for example a <a href="https://a.co/d/0d4wB1XD" target="_blank" rel="noopener noreferrer" class="text-blue-600 hover:text-blue-800 font-medium">refurbished iPhone 13</a>). An <strong>iPhone 12</strong> or newer should work. <strong>Pro</strong> models (Pro, Pro Max, etc.) work tooâbring a <strong>measuring tape</strong> and enter camera-to-plate distance and lens height after you mount.</p> 660 <p class="text-sm text-slate-500 italic">Note: Please include your exact iPhone model when you report an issue so we can track device-specific performance.</p> 661 </div> 662 </div> 663 </div> 664 <div class="border-t border-slate-200 faq-item"> 665 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 666 <span class="font-semibold text-slate-900">Where does HeyBLU work best?</span> 667 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 668 </button> 669 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 670<p class="mb-2">Outdoor, daylight, tripod <strong>10â15 feet from the plate</strong> offset ~45° from the pitch line, pitch speeds <strong>~60 MPH or less</strong> (tested), regulation baseballs or yellow softballs.</p> 671 <p class="mb-2">Background behind the pitcher matters: <strong>dark or natural backgrounds work best</strong>. A white fence, white wall, or light-colored surface behind the pitcher makes a white baseball hard to detect â if that's your only option, try shooting from the other side of the plate. Also avoid pointing the camera into direct sun.</p> 672 <p class="text-sm text-slate-500">Brand-new pearl-white baseballs may glare in bright sun.</p> 673 </div> 674 </div> 675 </div> 676 <div class="border-t border-slate-200 faq-item"> 677 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 678 <span class="font-semibold text-slate-900">When is HeyBLU less reliable?</span> 679 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 680 </button> 681 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 682<p class="mb-2">Indoor cages and nighttime are outside the app's current range. The dimmer the natural light, the more detection quality drops â deep shade can affect tracking even during the day. Camera angle less than ~20° from the direct pitch line causes inside/outside accuracy to degrade. Tripod past ~15 ft from the plate (10â12 ft is ideal). Pitch speeds regularly above ~65â70 MPH (untested). Hard breaking balls (still testing). Phone below ~30% battery. Non-regulation balls (wiffles, etc.) may not track correctly.</p> 683 </div> 684 </div> 685 </div> 686 <div class="border-t border-slate-200 faq-item"> 687 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false">
688 <span class="font-semibold text-slate-900">Is HeyBLU available on Android or iPad?</span> 689 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 690 </button> 691 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 692<p class="mb-2">Android is not supported as a <strong>tracking</strong> phoneâHeyBLU runs on iPhone only.</p> 693 <p class="mb-2">However, an <strong>Android phone makes an excellent WiâFi hotspot</strong> when you need Follow Game or Command Center. Any cheap Android will do; it does not need a SIM or data planâjust turn on hotspot and have both iPhones join it. See <a href="#connect-two-devices-faq" class="text-blue-600 hover:text-blue-800 font-medium">how to connect two devices</a>.</p> 694 <p class="mb-0">Use a secondary <strong>iPhone or iPad</strong> to open Command Center or Follow Game. The main tracking session always runs on iPhone.</p> 695 </div> 696 </div> 697 </div> 698 <div class="border-t border-slate-200 faq-item"> 699 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 700 <span class="font-semibold text-slate-900">How much battery do I need? What about long games?</span> 701 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 702 </button> 703 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 704<p class="mb-2">Start with a charged phone. On a full charge, the app may work for <strong>up to about 90 minutes</strong> of active tracking, depending on your iPhone model, brightness, heat, and cellular use. For long games or back-to-back sessions, a battery pack can helpâuse one only if the phone still fits securely on your mount.</p> 705 <p class="mb-0">For more on batteries, power, shade, and cooling in the dugout, see the <a href="https://www.facebook.com/groups/gamechangeradmins" target="_blank" rel="noopener noreferrer" class="text-blue-600 hover:text-blue-800 font-medium">GameChanger Admins Facebook group</a>; it has lots of practical tips from coaches and scorekeepers.</p> 706 </div> 707 </div> 708 </div> 709 <div id="iphone-settings" class="border-t border-slate-200 faq-item"> 710 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 711 <span class="font-semibold text-slate-900">What should I check on my iPhone before a session?</span> 712 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 713 </button> 714 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 715<p class="mb-3">HeyBLU keeps the screen awake while the app is openâyou do not need to change Auto-Lock. Before you head to the field:</p> 716 <ul class="list-disc list-inside space-y-2 ml-1 mb-3"> 717 <li><strong>Wipe the camera lens</strong> before setup.</li> 718 <li><strong>Volume up</strong>, or a <strong>Bluetooth speaker / earbuds</strong> so the pitcher can hear ball/strike calls from the mound.</li> 719 <li><strong>Settings â HeyBLU â Local Network On</strong> if you use Command Training, Follow Game, or Calibrate from another device.</li> 720 </ul> 721 <p class="mb-0 text-sm text-slate-500">Charge your phone before you go; Low Power Mode and Do Not Disturb are optional.</p> 722 </div> 723 </div> 724 </div> 725 <div class="border-t border-slate-200 faq-item"> 726 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false">
727 <span class="font-semibold text-slate-900">Airplane mode, WiâFi, and interruptions</span> 728 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 729 </button> 730 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 731<p class="mb-2"><strong>One iPhone (bullpen only):</strong> HeyBLU does not need cell service or internet to call pitches. Airplane mode is optional. Phone calls and alerts do not stop tracking, but they can interrupt ball/strike audioâDo Not Disturb is optional if you want fewer interruptions.</p> 732 <p class="mb-0"><strong>Two devices</strong> (Follow Game, Command Center, or Calibrate from another phone): use an <strong>Android hotspot</strong> or <strong>travel router</strong> when you can. If you must use someone elseâs iPhone hotspot, the <strong>Umpire (tracking) iPhone</strong> must turn on <strong>Airplane Mode</strong>, then turn <strong>WiâFi back on</strong>, and join that hotspot before connecting. See <a href="#connect-two-devices-faq" class="text-blue-600 hover:text-blue-800 font-medium">how to connect two devices</a>.</p> 733 </div> 734 </div> 735 </div> 736 <div id="screen-recording" class="border-t border-slate-200 faq-item"> 737 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 738 <span class="font-semibold text-slate-900">What about screen recording?</span> 739 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 740 </button> 741 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 742<p class="mb-0">iOS <strong>Screen Recording</strong> is supported, but it puts extra strain on your iPhone while the camera and tracking are already working hard. You should expect <strong>lower accuracy</strong> and <strong>more missed pitches</strong> than with recording off. For the most reliable calls, <strong>do not screen-record</strong> during a HeyBLU session; if you need video, use a second phone or camera on the side when possible.</p> 743 </div> 744 </div> 745 </div> 746 <div class="border-t border-slate-200 faq-item"> 747 <button class="faq-button w-full text-left px-5 py-4 flex justify-between items-center gap-3 focus:outline-none" onclick="toggleFaq(this)" aria-expanded="false"> 748 <span class="font-semibold text-slate-900">How do I report a problem or give feedback?</span> 749 <svg class="faq-icon w-5 h-5 text-slate-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg> 750 </button> 751 <div class="hidden px-5 pb-5 text-slate-600 text-sm leading-relaxed"> 752<p class="mb-4">We read every report. To reach us:</p> 753 <ul class="list-disc list-inside space-y-2 ml-2 mb-4"> 754 <li>Email <a href="mailto:[email protected]" class="text-blue-600 hover:text-blue-800 font-medium">[email protected]</a> with the details below.</li> 755 <li>Use our <a href="/support" class="text-blue-600 hover:text-blue-800 font-medium">support form</a>.</li> 756 <li>Want to refer a coach or league? Send them to <a href="https://apps.apple.com/app/apple-store/id6479205383?pt=126940554&ct=Home%20Page&mt=8" class="app-store-download-link text-blue-600 hover:text-blue-800 font-medium" target="_blank" rel="noopener noreferrer">download HeyBLU</a>.</li> 757 </ul> 758 <div class="bg-blue-50 border border-blue-200 rounded-lg p-4 mt-4"> 759 <p class="font-semibold text-blue-900 mb-2">When reporting an issue, please include:</p> 760 <ul class="list-disc list-inside space-y-1 text-sm text-blue-800 ml-2"> 761 <li>Your exact iPhone model.</li> 762 <li>
762The environment (Outdoor/Indoor, Sunny/Cloudy).</li> 763 <li>The Age Group and Mound Distance settings you used (set these to match the game you're watching).</li> 764 <li>A brief description of what happened (e.g., "No call on a clear strike down the middle," "Called ball but it was a strike," or "Tracking was unstable the whole game.")</li> 765 <li>Did you see "Tracking unstable," "Check camera," or "DRIFT CRITICAL" (or similar)? If yes, when (e.g., whole game, after a bump)?</li> 766 <li>Did you use on-screen <strong>Calibrate</strong> (9-zone grid)? Did you use Settings <strong>Adjust HeyBLU</strong> (Inside/Outside)? If yes, how many steps?</li> 767 </ul> 768 </div> 769 </div> 770 </div> 771 </div> 772 </div> 773 </section> 774 775 </main> 776 777 <footer class="bg-slate-900 text-slate-400 py-8 mt-auto"> 778 <div class="max-w-3xl mx-auto px-4"> 779 <div class="grid grid-cols-2 sm:grid-cols-3 gap-6 mb-8 text-sm"> 780 <div> 781 <h3 class="font-bold mb-3 text-white">Help</h3> 782 <a href="/help" class="block text-slate-400 hover:text-white transition mb-2">Help</a> 783 <a href="/how-to" class="block text-slate-400 hover:text-white transition mb-2">Video Tutorials</a> 784 <a href="/support" class="block text-slate-400 hover:text-white transition">Support</a> 785 </div> 786 <div> 787 <h3 class="font-bold mb-3 text-white">Product</h3> 788 <a href="/pricing" class="block text-slate-400 hover:text-white transition mb-2">Pricing</a> 789 <a href="/daily20" class="block text-slate-400 hover:text-white transition mb-2">Daily 20</a> 790 <a href="/compare" class="block text-slate-400 hover:text-white transition">Strike Zone Tech</a> 791 </div> 792 <div> 793 <h3 class="font-bold mb-3 text-white">Company</h3> 794 <a href="/" class="block text-slate-400 hover:text-white transition mb-2">Home</a> 795 <a href="/about" class="block text-slate-400 hover:text-white transition">About</a> 796 </div> 797 </div> 798 <p class="text-center text-sm border-t border-slate-700 pt-6">© 2026 <strong>Hey</strong><span class="text-blue-400 font-bold">BLU</span>. Built for the field.</p> 799 </div> 800 </footer> 801 802
802<script> 803 window.toggleFaq = function(button) { 804 const isExpanded = button.getAttribute('aria-expanded') === 'true'; 805 const content = button.nextElementSibling; 806 const section = button.closest('section'); 807 if (section) { 808 section.querySelectorAll('.faq-button').forEach(function(btn) { 809 if (btn !== button) { 810 btn.setAttribute('aria-expanded', 'false'); 811 if (btn.nextElementSibling) btn.nextElementSibling.classList.add('hidden'); 812 } 813 }); 814 } 815 button.setAttribute('aria-expanded', isExpanded ? 'false' : 'true'); 816 if (content) content.classList.toggle('hidden', isExpanded); 817 }; 818 const menuBtn = document.getElementById('menu-btn'); 819 const mobileMenu = document.getElementById('mobile-menu'); 820 if (menuBtn && mobileMenu) { 821 menuBtn.addEventListener('click', function() { 822 const open = !mobileMenu.classList.contains('hidden'); 823 mobileMenu.classList.toggle('hidden', open); 824 menuBtn.setAttribute('aria-expanded', String(!open)); 825 }); 826 } 827 function openDiagram(panel) { 828 if (!panel) return; 829 panel.hidden = false; 830 panel.classList.remove('hidden'); 831 panel.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); 832 } 833 function closeDiagram(panel) { 834 if (!panel) return; 835 panel.hidden = true; 836 panel.classList.add('hidden'); 837 if (location.hash === '#tripod-diagram' && history.replaceState) { 838 history.replaceState(null, '', location.pathname + location.search); 839 } 840 } 841 // Open hash target on load 842 if (location.hash) { 843 const el = document.querySelector(location.hash); 844 if (el) { 845 if (el.id === 'tripod-diagram') { 846 openDiagram(el); 847 } else { 848 const b = el.querySelector('.faq-button'); 849 if (b) toggleFaq(b); 850 } 851 } 852 } 853 document.querySelectorAll('a.diagram-link').forEach(function(link) { 854 link.addEventListener('click', function(e) { 855 const id = (link.getAttribute('href') || '').replace('#', ''); 856 const panel = document.getElementById(id); 857 if (!panel) return; 858 e.preventDefault(); 859 openDiagram(panel); 860 if (history.replaceState) history.replaceState(null, '', '#' + id); 861 }); 862 }); 863 document.querySelectorAll('.diagram-close').forEach(function(btn) { 864 btn.addEventListener('click', function() { 865 closeDiagram(btn.closest('#tripod-diagram')); 866 }); 867 }); 868 </script>
868 869
869<script src="/faq-search.js"></script>
869 870</body> 871</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.