#1MEDIUMFire TV / Vega · hackathon rules2026-10-22
Which "Fire TV simulator" counts for a Fire OS app is unclear
- Task
- Before submitting, confirm that our demo footage meets the Fire TV video rule. It shows our Fire OS APK (Kotlin, Media3) on the Android TV emulator, API 30.
- Steps
- The rules say the video "must show the project running on an actual Fire TV device or the Fire TV/Vega simulator".
- We looked for an Amazon "Fire TV simulator" for Fire OS and found none. The Fire tablet virtual-device guide says its steps "cannot be used to simulate the Fire TV".
- The Vega Virtual Device runs only Vega OS apps (
.vpkg) and needs native macOS or Ubuntu with KVM, which a judge confirmed on the forum. - Matching the rule word for word meant a Vega port (rewrite in React Native for Vega, re-implement IVS metadata and accessibility settings, rent a Linux host with KVM). We scoped it the day before the deadline.
- The answer was outside the rules: the FAQ ("Android TV Emulator or the Fire TV/Vega simulator is fine") and a judge's "Yes" on a forum thread about an Android 11 TV emulator.
- Expected
- The rules name the accepted emulator for each Fire TV OS.
- Actual
- Two different platforms behind one slash; "Fire TV simulator" matches no Amazon product for Fire OS. The Android TV emulator is accepted only in the FAQ and forum replies.
- Workaround
- None needed in the end: we kept the Fire OS app and the emulator footage.
- Suggestion
- Put the FAQ sentence in the rules ("Fire OS apps: a Fire TV device or the Android TV emulator, API 30. Vega apps: a Vega device or the Vega Virtual Device"), publish an official Fire OS 8 AVD profile or system image, and state on the VVD pages that it doesn't run Fire OS APKs.
#2MEDIUMFire OS · Vega SDK2026-10-16
No Fire OS or Vega emulator on Windows
- Task
- Record Fire TV footage from a Windows 10 development machine.
- Steps
- Read the Vega SDK install docs (0.21 to 0.24) and the Vega getting-started blog (2026-07).
- Expected
- A Fire TV simulator that runs on Windows.
- Actual
- The Vega SDK needs native macOS or Ubuntu; Windows and WSL aren't supported. An Amazon community answer says the VVD needs KVM or Hypervisor.framework and doesn't run nested. There is no first-party Fire OS emulator.
- Workaround
- The Fire OS APK runs on a generic Android TV API 30 emulator (WHPX); the final footage was recorded there, which the FAQ allows.
- Suggestion
- Ship the VVD with a Windows Hypervisor Platform backend, or publish a Fire OS 8 system image for the Android Emulator.
#3MEDIUMVega SDK installer2026-10-16
The Vega installer in WSL2 doesn't detect WSL or missing KVM
- Task
- Run the Vega Virtual Device through WSL2 on Windows 10.
- Steps
- WSL2 Ubuntu 24.04.3 with Node 18.19.1.
ls /dev/kvm → "No such file or directory"; grep -cE "vmx|svm" /proc/cpuinfo → 0.- Read
get_vvm.sh (1,927 lines): platform detection only maps "Linux x86_64".
- Expected
- A working VVD, or an immediate "WSL / no KVM" message before a roughly 20 GB install.
- Actual
- The installer would treat WSL as supported Linux. Nested virtualisation in WSL2 is a Windows 11 feature, so the VVD can never start on Windows 10. We stopped before installing.
- Workaround
- Build for Fire OS instead.
- Suggestion
- At the start of
get_vvm.sh, check /proc/version for "microsoft" and for a missing /dev/kvm, then exit with the alternatives.
#4HIGHAmazon Bedrock2026-10-06 · re-checked 10-23
Bedrock blocked on a new account, with two different, misleading errors
- Task
- Nova Multimodal Embeddings at ingest, and a Converse tool-use agent on Nova 2 Lite.
- Steps
aws login --region us-east-1.aws bedrock list-foundation-models --by-provider amazon lists amazon.nova-2-multimodal-embeddings-v1:0 and us.amazon.nova-2-lite-v1:0.- InvokeModel on the embeddings model.
aws bedrock-runtime converse --model-id us.amazon.nova-2-lite-v1:0 with a one-word prompt.
- Expected
- Listed models can be invoked, or every call fails with one clear verification error.
- Actual
- InvokeModel:
AccessDeniedException "Your account is currently being verified…". Converse, in the same minute: ThrottlingException "Too many tokens per day" on the account's first request ever. Still blocked 17 days later; Service Quotas showed every Nova quota at 0. A zero quota reported as throttling tells the developer to wait.
- Workaround
- Every feature runs on a labelled fallback: the rules interpreter, a local embedder, and the same agent code on OpenRouter.
- Suggestion
- Return one explicit
AccountVerificationPending error from every Bedrock API, and show "not invocable until verification completes" with an ETA in ListFoundationModels and the console.
#5MEDIUMAmazon Transcribe · Amazon Translate2026-10-06 / 10-17
An error about an access key that doesn't exist
- Task
- List Transcribe jobs and translate a sentence, signed in with
aws login (the account has no access keys).
- Steps
aws transcribe list-transcription-jobs --max-results 1; aws translate translate-text --text "Two minutes left" --source-language-code en --target-language-code es.
- Expected
- An empty job list and the translated text.
- Actual
- Both return
SubscriptionRequiredException: The AWS Access Key Id needs a subscription for the service.
- Workaround
- Captions come from the source; translation tries Amazon Translate first, then falls back to the agent's model and names the engine that ran.
- Suggestion
- Say "account verification pending" for federated or console-derived credentials.
#6MEDIUMAmazon Rekognition Video2026-10-07
Rekognition Video fails late and vaguely on AV1 footage
- Task
- Shot detection on a 720p video (AV1 in MP4) stored in S3.
- Steps
- StartSegmentDetection (SHOT) accepted it and returned a JobId; we polled GetSegmentDetection for about 45 s.
- Expected
- A shot list, or an immediate validation error.
- Actual
- IN_PROGRESS → FAILED with "Unsupported codec/format." without naming the codec. Re-uploading a fixed file under the same key with the same
ClientRequestToken returned the old failed job.
- Workaround
- Transcode with
ffmpeg -c:v libx264 -g 30, and include the file size in ClientRequestToken.
- Suggestion
- Validate the codec synchronously or name it in StatusMessage, and support AV1/VP9.
#7MEDIUMAmazon Rekognition Image2026-10-16
RecognizeCelebrities returns a look-alike on a turned-away player
- Task
- "Who's this?" on a live frame of Soccer Aid 2023 at 2:22 (Usain Bolt jogging away from the camera).
- Steps
lens.identify → RecognizeCelebrities on the paused frame, twice, 1 s apart.
- Expected
- Usain Bolt, who matched at 91 to 98% on the neighbouring frames.
- Actual
- "Ulysses Owens" at 85%; the two takes returned different people.
- Workaround
- A live match counts only if the index already knows that person or confidence is at least 99%; otherwise we use the shot's match from ingest.
- Suggestion
- Return a pose or quality signal with MatchConfidence, or allow scoping matches to a candidate list.
#8HIGHAmazon DynamoDB2026-10-16
DynamoDB read latency spikes on the request path
- Task
- Read the last 6 Viewing Memory events for every TV request.
- Steps
- Query from the JS SDK v3 with
aws login session credentials during a recording session.
- Expected
- Consistently fast reads.
- Actual
- Usually under 200 ms, but spikes of 12.2, 9.0, 5.4 and 2.2 s; "Normal speed" took 10.5 s end to end.
- Workaround
- An 800 ms budget on the read, reusing the last good read.
- Suggestion
- Clearer guidance on connection reuse and keep-alive for the JS v3 client with
aws login credentials.
#9MEDIUMAWS CLI aws login2026-10-07 / 10-16
Sign-in sessions expire under a long-running server
- Task
- Keep our server running for hours after
aws login.
- Steps
- Signed in in the morning, kept the server running, then made a
/api/tts request.
- Expected
- Credentials keep working, or refresh.
- Actual
- Every AWS call failed with "Your session has expired. Please reauthenticate."; re-running
aws login once timed out; the server needed a restart; every request returned 500 because the context reads DynamoDB first.
- Workaround
- Viewing Memory fails over to a local log, and we sign in again before recording.
- Suggestion
- Refresh sessions silently, print the session length, and let SDKs reload credentials without a restart.
#10LOWAmazon IVS2026-10-17
IVS injects its own ld_lat_data cues alongside PutMetadata
- Task
- Send goal markers with PutMetadata on a LOW-latency BASIC channel and read them in ExoPlayer.
- Steps
- Pushed RTMPS from ffmpeg, called PutMetadata with
{"t":"goal","title":…}, logged every onMetadata entry.
- Expected
- Only our payloads.
- Actual
- Every segment also carries
{"cmd":"ld_lat_data",…}; our first build treated these as events.
- Workaround
- Accept only cues that carry our fields.
- Suggestion
- Document
ld_lat_data next to PutMetadata, or use a separate ID3 owner for it.
#11MEDIUMAndroid TV emulator (Fire OS stand-in)2026-10-17
The Android TV emulator has no internet DNS
- Task
- Play the IVS live stream in the Fire OS app on the emulator.
- Steps
- Started the stream, opened it in the app; restarted the emulator with
-dns-server 8.8.8.8,1.1.1.1.
- Expected
- The stream plays.
- Actual
- ExoPlayer reported
UnknownHostException for the IVS host, while the host machine reached IVS fine.
- Workaround
- A byte-for-byte relay for the stream (
SP_IVS_RELAY=1). A real Fire TV plays IVS directly.
- Suggestion
- A Fire OS emulator for Windows with working networking, or documented network setup for the Android TV image.
#12MEDIUMFire TV accessibility APIs · React Native2026-10-17 / 10-22
Captions and Audio Description: two mechanisms, native-only docs, nothing after Fire OS 8
- Task
- Make our player follow the viewer's Closed Captions and Audio Description settings, first in Kotlin, then in React Native.
- Steps
- Followed Implement reading and subscribing to AD/CC:
CaptioningManager for captions; the secure-settings key accessibility_audio_descriptions_enabled with a ContentObserver for AD. - Looked for the same in React Native, Amazon's starter sample and npm.
- Expected
- One API for both settings, valid on current Fire OS, usable from React Native.
- Actual
- Two unrelated mechanisms, one an undocumented string key that exists only after the user first toggles it; the AD section "only applies to Fire OS 8 devices and earlier"; React Native has no API for either, and Amazon's sample ignored both.
- Workaround
- We built and open-sourced expo-tv-accessibility-settings and contributed the integration to Amazon's sample (PR #144).
- Suggestion
- State what Fire OS 9+ uses for AD, ship an official React Native / Vega API (or an Amazon-maintained module), and make the starter sample follow both settings by default.
#13HIGHAmazon's React Native TV sample · react-native-video2026-10-22
Amazon's React Native starter can't show side-loaded captions on Fire OS
- Task
- Show WebVTT captions in
react-native-multi-tv-app-sample on the Android TV emulator, following the CC setting.
- Steps
- Added
source.textTracks (English and Spanish VTT) and selectedTextTrack to the sample's VideoPlayer (react-native-video ^6.8.0, resolving to 6.19.1), then turned CC on.
- Expected
- Captions appear.
- Actual
- The VTT files were never requested ("Text track not found for type=language, value=en"). Since 6.16, side-loaded tracks are only set on
MediaItem.subtitleConfigurations, which the per-type Media3 factories ignore. Upstream issue #4792 had no cause.
- Workaround
- Fixed in react-native-video (PR #5178), verified on the emulator; apps need a patch until it ships.
- Suggestion
- Pin the sample to a react-native-video version whose captions work on Fire OS, and add a captioned title to the sample catalog so regressions are visible.