Maybe we should add a setting "NoSeekDelaySoBenchmarksGoVroom=true" 
Wow.
So, just to bring the average reader of this thread "up to speed" (he he)...
As per what is written here, those super fast transfer rates reported by @Androda require a "SCSI card that supports Ultra SCSI (Fast20)." That means we can't just flash our BSv2 units with the latest firmware, then plunk it into something like a largely stock PowerMac 9600 and expect any faster performance than older BSv2 firmware. An UltraSCSI card is required.
BlueSCSI cant go faster than the bus it's on - but since you mentioned a 9600 which has a 10MB/sec bus you actually will see a ~5-10% improvement just with the overclock. If you checked the release notes too we bumped the base clock up to 200MHz as Pi Foundation upped them a while ago. So you will get a bump next time you update, but to get the biggest bump, You'll need an Ultra card. Coincidentally my 9600 has a U160 card in it.
For all you CD Audio fans out there, get ready: #BlueSCSI V2 is going to support audio output soon, on hardware versions 2023.09a and later!
Over the Christmas break I took a look at the two audio output options available to the framework (I2S and S/PDIF). I2S unfortunately doesn’t pan out for V2 because we only have two spare GPIO, and I2S needs three. S/PDIF on the other hand requires only a single signal line.
With a cheap S/PDIF converter box in hand, I have successfully updated the framework to make it functional on Pico and Pico 2. Currently only one clock speed is supported for S/PDIF but we might be able to make it work in other modes.
The primary changes are:
* Not using the SPI peripheral (it’s not available on our two spare pins), switched to PIO
* Getting the clock divider right
Next Steps:
* Software release
* Hardware design, to make something which plugs into the QWIIC port for ease of use
BlueSCSI v2026.02.08-RC1 - Superb Owl
If you run into any issues please open a Discussion.
This is a release candidate for all versions of BlueSCSI v2 and Ultra/Ultra Wide.
There will be an Release Candidate 2 as well merging in the recent Wi-Fi optimizations from @jcs wifi-speed and @RobSmithDev #317.
Updating
BlueSCSI v2
- Use BlueSCSI v2 Universal for the Pico/PicoW based BlueSCSI.
- Audio Builds are available and due to memory constraints are provided as a separate uf2s.
BlueSCSI Ultra/Ultra Wide
- Use the uf2 corisponding to your device.
SD Card
- Use .bin file.
Future
We have a much nicer update system in the works with one uf2 for all - stay tuned!
New Features
- CD Audio Output - BlueSCSI can now output CD audio over S/PDIF or I2S depending on model. Supported on Pico, Pico 2, and Ultra/Ultra Wide. DAC required. (6b10879, b63afa7 - @androda)
- BlueSCSI Toolbox Performance Boost - File transfers are now up to 11.5x faster thanks to larger transfer buffers. Fully backwards compatible with existing BlueSCSI Toolbox clients. (41ecbe9 - @erichelgeson)
- BlueSCSI Toolbox Metadata API - New API for retrieving device metadata through the Toolbox interface. (279d991 - @erichelgeson)
- Improved Fragmented Image Performance - Enabled FastSeek for fragmented disk images, improving read performance on fragmented SD cards. (01ebebd - Ian Scott @polpo)
- Arbitrary Sector Size Imaging - Initiator mode now supports imaging drives with non-standard sector sizes (e.g., 520-byte sectors used by some enterprise drives). (a342253 - @erichelgeson)
- Configurable SCSI Timing Delays - New INI settings allow fine-tuning SCSI bus timing for compatibility with picky devices like EMU EMAX, Akai samplers, and SGI workstations. (700b28f - @erichelgeson)
- Configurable Initiator Start Sector - Initiator mode can now begin imaging from a specified starting sector on a per-device basis. (1751310 - @androda)
- USB Device Name - BlueSCSI now correctly identifies itself as "BlueSCSI" when connected via USB, using standard Pico SDK product IDs. (b104c1e - @erichelgeson)
- Multi-bin CUE Handling - Directories with a mix of .bin and .cue files now correctly associate .bin files with their .cue sheets automatically. (ea61cbf - @erichelgeson)
BlueSCSI Ultra / Ultra Wide
More information about BlueSCSI Ultra/Ultra Wide can be found at https://bluescsi.com/ultra
- Initial 16-bit Wide SCSI support - Hardware-accelerated 16-bit wide SCSI bus with synchronous transfer speeds up to 20MHz, wide bus negotiation, and dual-core optimized parity generation. (7fbcc34 - @PetteriAimonen, @morio)
- Ultra and Ultra Wide board support - Full support for the new BlueSCSI Ultra (RP2350-based) and Ultra Wide (16-bit SCSI) hardware platforms. (2ed8fdc - @androda)
- Wide SCSI (16-bit) data transfers - Ultra Wide supports full 16-bit wide SCSI data transfers with hardware-accelerated DMA. (2ed8fdc, ee85a89 - @androda)
- Wide initiator mode - Initiator mode works on Ultra Wide with automatic bus width negotiation. Can image both 8-bit and 16-bit SCSI devices. (ec19528, ee85a89 - @androda, @PetteriAimonen , @morio)
- Fixed DMA state crash on Ultra Wide - Resolved a race condition in the 16-bit DMA accelerator that caused crashes after 6-byte SCSI commands. (b75b27e - @PetteriAimonen)
- Fixed initiator mode on Ultra - Corrected a typo that prevented initiator mode from functioning on Ultra boards. (d691d7c - @erichelgeson)
- Bus width reset on SCSI bus reset - Ultra Wide now correctly resets to 8-bit bus width when a SCSI bus reset occurs, then re-negotiates wide transfers. (b0268dc - @erichelgeson)
- SCA drive bay support - Ultra Wide boards can now be installed in SCA (80-pin) drive bays with proper signal handling and LED control. (14e6acc, d8f8d5c - @androda)
- Hardware initiator/USB mode switch - Ultra and Ultra Wide boards support a hardware switch to toggle between initiator and USB MSC modes without changing INI settings. (ec19528 - @androda)
- SCA detection limited to Wide boards - SCA drive bay detection is now correctly restricted to Ultra Wide hardware only. (196c87b - @erichelgeson)
- Improved sync negotiation logging - Synchronous transfer negotiation is only logged when speed increases, reducing log noise. (5f321c6 - @erichelgeson)
- Fixed GPIO assignments - Corrected GPIO pin number assignments for Ultra hardware. (c285331 - @androda)
- Dynamic DMA channel allocation - I2S audio and Wide SCSI DMA channels are now dynamically allocated to avoid conflicts. (22b15a3, 0a546f8 - @androda)
BlueSCSI v2
- S/PDIF audio output support - New build targets (BlueSCSI_Pico_Audio_SPDIF and BlueSCSI_Pico_2_Audio_SPDIF) enable S/PDIF digital audio output on any desktop 50-pin BlueSCSI v2 board. Works on both Pico (RP2040) and Pico 2 (RP2350) boards. (6b10879, b63afa7 - @androda)
- S/PDIF setup failure handling - Graceful recovery when S/PDIF hardware initialization fails. (49dc901 - @androda)
- Network and audio coexistence - Reduced network packet queue size to accommodate S/PDIF memory requirements, allowing both networking and audio to work simultaneously. (5117441 - @erichelgeson)
- Removed Arduino dependencies - Migrated from Arduino framework to native TinyUSB and Pico SDK for USB, timing, and peripheral access. (7dc5476, fc518b8, 59de2dd - @erichelgeson)
- Voltage regulation fix - Properly set voltage regulator for clock speeds above 200MHz. (c75ba7d - @erichelgeson)
Bug Fixes
- Fixed SCSI timing accuracy - The 100ns timing delay now correctly scales across all supported clock speeds (125-252MHz) instead of producing inconsistent 44-88ns delays. (23b69a7 - @erichelgeson)
- Fixed SCSI timings out of spec - Corrected bus timing values that were outside the SCSI specification. (bb9a504 - @erichelgeson)
- Fixed multi-bin CUE track boundaries - Corrected track boundary calculation for multi-bin CUE files where each track is in a separate .bin file with stored pregap. (e85043e - @erichelgeson)
- Fixed integer underflow in cue parsing - Allows Mac Decent II to parse correctly (fda07d95 - @erichelgeson)
- Fixed initiator mode on Pico W / DaynaPORT builds - Resolved a conflict between the WiFi driver and SCSI initiator mode that caused initiator failures on Pico W boards. (63d643b - @erichelgeson)
- Fixed X68000 SASI compatibility - Corrected command descriptor block length for X68000 SASI drives. (9903f2c - @erichelgeson)
- Fixed BSY signal handling - BlueSCSI no longer incorrectly asserts BSY when reading the REQ line. (cafa219 - @androda)
- Fixed SEL output pin handling - Improved SCSI selection phase signal output. (9ac34e9 - @androda)
- Fixed freeze on startup without SD card - BlueSCSI no longer hangs on boot when no SD card is inserted. (4792e18 - @androda)
- Unit Tests - Helps us developers catch issues before releases. 26 test suites with 2287 assertions. (@erichelgeson)
New INI Settings
[SCSI] Section
Setting Default Description PhaseChangeDelay 100 (SCSI-1) / 0 (SCSI-2) Delay in microseconds after SCSI phase transitions. EMU EMAX needs 100. SGI O2 may need 15. (700b28f - @erichelgeson) DataPhaseDelay 400 (SCSI-1) / 0 (SCSI-2) Delay in microseconds before entering data phases. Required by Akai S1000/S3000 samplers. (700b28f - @erichelgeson) BusFreeDelay 2 (SCSI-1) / 0 (SCSI-2) Delay in microseconds when entering bus free state. (700b28f - @erichelgeson) SCAModelLEDEnable false Enable LED control for SCA drive bay installations (Ultra Wide SCA only). (d8f8d5c - @androda) [SCSI0] - [SCSI7] Sections
New Features
- AmigaNET Network Adapter - New Amiga-optimized network adapter emulation with batch/bulk transfers for increased speed. Configured using image files prefixed with AM instead of NE. Includes workarounds for Amiga SCSI hardware/ROM quirks. (3d74562 - @RobSmithDev)
- DaynaPORT Multi-Packet Transfers - DaynaPORT now sends multiple network packets in a single SCSI READ(6) and correctly parses multiple outgoing packets in a WRITE(6), matching real DaynaPORT SCSI/Link-3 behavior. This dramatically improves EtherTalk transfer rates by eliminating 2-second ATP timeouts caused by dropped combined packets. (e7d9629 - @jcs)
- WiFi Reconnection on Link Loss - When the WiFi connection drops, the firmware now automatically reconnects using exponential backoff (10s, 20s, 40s, 80s, 160s) with a 5-attempt cap. Reconnection only runs during BUS_FREE phase to avoid interfering with SCSI operations. (98b922a - @erichelgeson)
- Log Non-Default INI Settings - Non-default INI settings are now logged at startup, making it easier to diagnose configuration issues. (123d610 - @erichelgeson)
- Ultra Expansion PCB Template - New PCB template for Ultra expansion boards. (5469312 - @androda)
Bug Fixes
- Fixed SD card firmware update failure for non-Ultra targets - A float printf call in the bootloader pulled in 8.6KB of libc, pushing the Ultra bootloader over 128KB and bumping the global bootloader size to 256KB. This caused old 128KB bootloaders on Pico/Pico2 to fail with "Invalid firmware file". Fixed by casting to int, restoring all bootloaders to 128KB. Fixes #334. (3899308 - @erichelgeson)
- Fixed hang from bad CUE sheet - When a CUE sheet references a non-existent or mismatched BIN file, the device was configured with 0-size image data causing every host read to fail and hang the Mac during boot. Fixes #331. (2866afd - @erichelgeson)
- CUE FILE reference validation - CUE sheets are now validated at load time to ensure the FILE reference matches the actual BIN filename, rejecting mismatches early with a clear log message. (3c0a4b7 - @erichelgeson)
- Fixed Toolbox LIST_CDS creating directories - BlueSCSI Toolbox LIST_CDS no longer creates CD directories on the SD card as a side effect, which could cause SCSI ID conflicts on next power-on. Fixes #325. (baec358 - @erichelgeson)
- Fixed Ultra RM2 module detection - Updated platform framework and fixed define reference for Ultra RM2. (ab3aacf - @androda)
Refactoring
- Shared WiFi handlers - Extracted common WiFi command handling from network.c and AmigaWIFI.c into shared code, reducing duplication. (2fab328 - @erichelgeson)
- Removed outbound packet queue - DaynaPORT packets are now sent immediately upon receipt from the host, eliminating the outbound queue. (e7d9629 - @jcs)
Contributors
@androda @erichelgeson @jcs @RobSmithDev