# Bigscreen Beyond Firmware Changelog

## [0.3.12][v0312] - 2025-06-03
[v0312]: https://github.com/BigscreenVR/beyond_synaptics/commit/696e10b50cad0730b88fb0cda3fbc94366448a71
* only performs one reconfig if the fpga is found in bootloader mode
* prevents locking up in reconfig cycles for 50 times (takes ~3 minutes) when no camera application config is loaded

## [0.3.11][v0311] - 2025-05-23
[v0311]: https://github.com/BigscreenVR/beyond_synaptics/commit/5e0fcce87e67418f65ad15ba237015b00e08ebd2
* eyetracking overcurrent error reporting added
  * checks the fpga registers repeatedly for latched overcurrent faults, if detected begins flashing displays with inverted colors

## [0.3.10][v0310] - 2025-05-19
[v0310]: https://github.com/BigscreenVR/beyond_synaptics/commit/f699d928c575ba363b5dd90ab993f517cd740397
* Increased mcu wait from ~50 ms to 5 sec when checking if FPGA is in bootloader mode
  * Previously, mcu didn't wait long enough for configuration to complete (~3 sec) and FPGA would be left in bootloader mode.

## [0.3.9][v039] - 2025-03-28
[v039]: https://github.com/BigscreenVR/beyond_synaptics/commit/4cdc7fa9d610394b5a8f8347357cfe4440efdfb3
* Added FPGA read over I2C command to HID 
* Changed while-waiting loop in I2C transaction to FreeRTOS semaphore.
  * This fixes the occasional blackouts when changing OLED brightness. Was caused by higher priority threads clobbering I2C transactions of lower ones.
  * Reduced I2C interrupt priority, as it was previously too high of a priority and didn't play nice with FreeRTOS.
* Corrected shutdown procedure in bootloader reset (was trapped trying to use I2C after FreeRTOS shut down)
* Added checks on startup for FPGA configuration (useful in DVT-2 and later only) and will automatically reconfigure into application mode from bootloader mode.

## [0.3.8][v038] - 2025-02-27
[v038]: https://github.com/BigscreenVR/beyond_synaptics/commit/a4fb11064c7d4c7bfadb227569311dc931d89b0b
* Rolled 0.3.7E into 0.3.8, as we're now finished with the testing phase for the darkness blips problem.

## [0.3.7E][v037E] - 2025-02-20
[v037E]: https://github.com/BigscreenVR/beyond_synaptics/commit/1bce0b336a83b18f9c92a7e80fe5b2a3255b572b
* FreeRTOS scheduling re-enabled for I2C. This caused the microphone to be corrupted as its upload task wasn't executed in time.
* I2C is now interrupt driven rather than busy-wait loop. Still fixes the proximity glitch which was due to missing the RXRDY interrupt and not setting the STOP bit in time.

## [0.3.7D][v037D] - 2025-02-19
[v037D]: https://github.com/BigscreenVR/beyond_synaptics/commit/84cfd8cbf21b0e7047e4631ae90588cce5a87430
* prox sensor (and actually all I2C transactions) now occur with FreeRTOS scheduling disabled. This appears to fix most prox sensor issues.

## [0.3.7C][v037C] - 2025-02-19
[v037C]: https://github.com/BigscreenVR/beyond_synaptics/commit/b555f53861d951520bbc79f5359ce0daaa7324c8
* fixes incompatibility on BS1 (no longer shuts down the 1.8V supply!!)
* performs sanity checks on incoming proximity sensor samples - rejects too low or too high values and does not use them to update prox on/off

## [0.3.7][v037] - 2025-02-02
[v037]: https://github.com/BigscreenVR/beyond_synaptics/commit/4eef9453adb270c460354e6ba3d409b421232faf
* proximity sensor returns last value read when disconnected, not zero anymore

## [0.3.6][v036] - 2025-01-28
[v036]: https://github.com/BigscreenVR/beyond_synaptics/commit/ee2fc980a32f96948e7f9878376642362e1ce63b
* added i2c open drain command before OLED read ID

## [0.3.5][v035] - 2024-12-19
[v035]: https://github.com/BigscreenVR/beyond_synaptics/commit/53a086ace854cb4e852cf46648ff7fd68e87113b
* Added FPGA control commands
* Unified builds for BS1, BS2 (with USB2517 and triple USB3803)

## [0.3.4][v034] - 2024-12-06
[v034]: https://github.com/BigscreenVR/beyond_synaptics/commit/af7b6ab9e7e637ab66ac8cce3269ed3bf5f14f1c
* Fix for vertical bars on 90Hz
* Proximity timer bugfix

## [0.3.3][v033] - 2024-11-13
[v033]: https://github.com/BigscreenVR/beyond_synaptics/commit/af6137bbd3df3334a4dbe14bd259aea0b726edcc
* Reverted and removed USB2517 support.
* Added support for triple USB3803 BS2 board.

## [0.3.2][v032] - 2024-10-30
[v032]: https://github.com/BigscreenVR/beyond_synaptics/commit/e95676f44a02f916204527b5a8714a5908ff2122
* Bugfix in USB2517 driver.

## [0.3.1][v031] - 2024-10-10
[v031]: https://github.com/BigscreenVR/beyond_synaptics/commit/602f37b908b73d392794baf3ce73ad95ce4056c7
* Initial changes for BS2, added USB2517 hub startup code, firmware detects BS1 vs BS2 by presence of USB2517
* New HID commands to enable or disable OLED power supplies. NOTE this does not work for BS2, since 1.8V is always on
* New HID command to set the fan speed in a deferred mode, only actually changing speed when video is on.
* More information in periodic HID report: display brightness and video status

## [0.2.25][v0225] - 2024-01-18
[v0225]: https://github.com/BigscreenVR/beyond_synaptics/commit/93475f658769ae350ae52294b5f6f36f47b4162f
* Changed 2544x2544 60Hz to use pulsed emission instead of blank insertion.

## [0.2.24][v0224] - 2023-12-21
[v0224]: https://github.com/BigscreenVR/beyond_synaptics/commit/e143c40360315d00bfbc437f43de47a50ce03bc5
* Adds new FATP modes, both can be accessed with HID FATP entry command, requires a second byte after the '@'
  * 2nd byte = 1: 60Hz at 1920 (removes 2560 30Hz from this mode) non-DSC
  * 2nd byte = 2: 60Hz at 2544, requires DSC
* NOTE: for 60Hz 2544, new VXR firmware is required [Beyond_v03_20231221.fullrom](https://github.com/BigscreenVR/beyond_synaptics/vxr7200_firmware\Beyond_v03_20231221.fullrom)

## [0.2.22][v0222] - 2023-11-17
[v0222]: https://github.com/BigscreenVR/beyond_synaptics/commit/7caa3019fad4389edb66c73896134a581ce261f6
* Fixes microphone popping due to bad buffer position update.
* Fixes display usage timers counting up even with displays off. Was affected whenever Beyond left powered on, idle after using displays.

## [0.2.21][v0221] - 2023-11-02
[v0221]: https://github.com/BigscreenVR/beyond_synaptics/commit/8e81ed76de9ca1aa90a517441bceeb3cdda65016
* Adds short delay after OLED display on command before sending the final dimming command. Recommended by manufacturer.

## [0.2.20][v0220] - 2023-11-01
[v0220]: https://github.com/BigscreenVR/beyond_synaptics/commit/a7b3646711b412e8c455603c1bae2f156deba61e
* Modifies the OLED startup routine. Fixes the temperature compensation so it is now correctly loaded at startup.

## [0.2.19][v0219] - 2023-10-17
[v0219]: https://github.com/BigscreenVR/beyond_synaptics/commit/cd3f9ebb2076c768afcf1e74dff6463e57c4d9d4
* Fixes a stuck state that occurred every time the usage timers filled a Flash page and needed to be copied to the other blank page.
* Increased the video_proc stack size from 512 to 1024. Remaining stack had been getting scary low after starting video on the displays.

## [0.2.18][v0218] - 2023-10-14
[v0218]: https://github.com/BigscreenVR/beyond_synaptics/commit/0c23f49d709bcae133aa39996b7f3257b1f71db1
* Added reset to bootloader command to error handler

## [0.2.17][v0217] - 2023-10-13
[v0217]: https://github.com/BigscreenVR/beyond_synaptics/commit/1c2568f9fa9c6ab0306417ef02544a5bdc75cac8
* Added memory readout to the error handler
* Included FPU registers in the processor state 
* Added hard fault status registers to the error reason message

## [0.2.16][v0216] - 2023-10-10
[v0216]: https://github.com/BigscreenVR/beyond_synaptics/commit/120b55464c0b64361ea5479d33ce76fcff4aca17
* Created error handler feature which allows for retrieval of processor state after an error

## [0.2.15][v0215] - 2023-09-28
[v0215]: https://github.com/BigscreenVR/beyond_synaptics/commit/99aea080c468585e849b64a79a2512f477f82712
* Increased stack size available to FreeRTOS timer task "Tmr Svc". The original minimal stack size would overflow in certain situations right when the 5 minute proximity timer elapsed.

## [0.2.14][v0214] - 2023-09-15
[v0214]: https://github.com/BigscreenVR/beyond_synaptics/commit/c3efd83db71fa365ae166f7a671c95b2d730b4f5
* Adds 72Hz EDID mode, but not enabled yet for users due to bug in VXR7200 at this video timing.
* Changed mic gain from 3x to 1.5x (technically 2x integral gain and 0.75x fractional gain)

## [0.2.13][v0213] - 2023-09-13
[v0213]: https://github.com/BigscreenVR/beyond_synaptics/commit/b04f1adc6622c6d3a2ab1104d696a3f69d98f287
* Added separate right optic total usage timer. Previous timer used for left optic.
* Added USB HID command to set the current usage timers.
* Mic gain reduced from 7x to 3x.
* Default EDID sets preferred resolution to 75Hz instead of 90Hz. This is helpful on AMD GPUs as SteamVR fails to find the Beyond's monitor if Watchman JSON and Windows OS resolutions do not match. At least for the intial boot. After entering direct mode, Windows OS cannot control resolution.

## [0.2.12][v0212] - 2023-07-05
[v0212]: https://github.com/BigscreenVR/beyond_synaptics/commit/575485fa291c3cbdf5dc73bb91537702b93357b8
* Lowered mic gain from 10x to 7x.
* Changed dimming method on FATP 30Hz from black frame insertion to multi-pulse emission. Not great for real VR usage, but it prevents the obvious strobing seen when using black frame at low frame rates.
* Added proximity enable command, which can undo the proximity disable command without power cycling.

## [0.2.11][v0211] - 2023-06-07
[v0211]: https://github.com/BigscreenVR/beyond_synaptics/commit/96168e0f6517621fa5f5c1148df3f1e6482973ce
* Added 4kB delete command for VXR7200 firmware update. Previous was limited to 64kB delete, which would always mean deleting part of the VXR firmware section even if only the VXR config needed to be updated.

## [0.2.10][v0210] - 2023-05-15
[v0210]: https://github.com/BigscreenVR/beyond_synaptics/commit/bee75405a8a0ca45ab9751f167a2f70725736699
* Added USB HID reset command
* Added USB HID colorbar test pattern command (for use in factory)

## [0.2.9][v029] - 2023-05-09
[v029]: https://github.com/BigscreenVR/beyond_synaptics/commit/226ee7c9d4359e16713fec722f8c63c2a6688761
* Fixes the Longest continuous display on timer. Was incorrectly using the Total time display on timer memory location.

## [0.2.8][v028] - 2023-05-09
[v028]: https://github.com/BigscreenVR/beyond_synaptics/commit/78f56fc6c742a1e52e0af0affe66120414773502
* Adds retry attempts to brightness setting. Previously could fail to correctly set brightness after USB HID command, resulting in uneven brightness across displays.

## [0.2.7][v027] - 2023-04-20
[v027]: https://github.com/BigscreenVR/beyond_synaptics/commit/129a0b4d7322346d9d76e45971a97a21081533ee
### April 20, 2023
* Fixed PDM microphone fractional gain. Wasn't actually used before.
* Single mode EDID switch added to config memory options
* Changes proximity sensor dimming. Instead of immediately turning off displays (which results in a temporary blue hue when they turn back on) it dims them to the minimum possible brightness for 5 minutes. After 5 minute timer elapses, they fully turn off like before. This should reduce the number of times users see that blue color shift.

## [0.2.6][v026] - 2023-04-12
[v026]: https://github.com/BigscreenVR/beyond_synaptics/commit/b3ff8d87c8bf2335c60223d9e4b6a28da349b283
* Added USB HID command to disable proximity sensor until next power cycle
* Fan and LED turn on and off with video signal
* Slight tweaks to RGB breathing animation

## [0.2.5][v025] - 2023-03-31
[v025]: https://github.com/BigscreenVR/beyond_synaptics/commit/dd398f2d7e801e048e8f04400adce94266ff0c19
* Added command to switch for single mode EDIDs
* Updated reported USB manufacturer and product names from "Generic" "Stereo USB Microphone" to "Bigscreen" "Beyond"

## [0.2.4A][v024A] - 2023-03-07
[v024A]: https://github.com/BigscreenVR/beyond_synaptics/commit/2c0bfeb75434a90896112d84869ed5e83c059d85
* Added initialization of second on-board USB hub chip for Bluetooth on HMDs

## [0.2.4][v024] - 2023-02-28
[v024]: https://github.com/BigscreenVR/beyond_synaptics/commit/a58570681f6e94e9ba1ae7c3d09252d1bf2279b3
* Fan soft start instead of slamming to set speed
* Read OLED ID string command added

## [0.2.3][v023] - 2023-02-23
[v023]: https://github.com/BigscreenVR/beyond_synaptics/commit/12302bf2172c3168665d3e059f0e8d9112a4e63b
* EDID update per Nvidia's recommendations
* Change proximity sensor to use FAR photodiode for better sensitivity
* Added config memory settings for proximity calibration
* Proximity sensor performs averaging before determining on/off status

## [0.2.2][v022] - 2023-02-02
[v022]: https://github.com/BigscreenVR/beyond_synaptics/commit/acdbdd71d9de019fe2730a663954db1f03670285
* Added control of proximity sensor settings over USB HID, to match options in the Python prox_config tool.

## [0.2.1][v021] - 2023-01-31
[v021]: https://github.com/BigscreenVR/beyond_synaptics/commit/04d647f7c2f743e3f0cfc765e5e23e6592882b8e
* Mic defaults to Mono instead of Stereo
* Added usage timers in emulated "EEPROM" region of Flash.
* Startup OLED brightness config setting added.

## [0.2.0][v020] - 2022-12-08
[v020]: https://github.com/BigscreenVR/beyond_synaptics/commit/089ba0490bf49dbaec0016c8a78fc2b355eaa72d
* Built-in hardware tests accessible over serial UART port for use in factory.
* Added FATP video modes that avoid using DSC.
* New configuration data format using variable length tags instead of fixed struct.

## [0.1.0][v010] - 2022-10-27
[v010]: https://github.com/BigscreenVR/beyond_synaptics/commit/ed9dd9344e6ea146ff836b6cc7282910ad22fd72
* Added software version string and method to retrieve it over USB HID.