This tools was originally created to control the Vidar Dosimetry Pro scanner for the BFD-9000 project. However, it has been repurposed so that it can be easily re-used with any scanner by just writing scanner drivers for it.
This software reverse-engineers the USB protocol to enable direct control of the scanner.
- Download the latest release from the releases page
- Run
bfd9010_fhir32.exe(GUI application)- The scanner will initialize automatically
- A small window will appear showing status
- The FHIR API server starts on
http://localhost:5000
- Navigate to
https://wingate.case.edu/bfd9000/to scan - The web application will communicate with your local scanner via the API
See the API README for detailed documentation on:
- Building from source
- FHIR API endpoints
- Integration details
- Architecture overview
Command-line interface for direct scanner control.
cd BFD9010.Cli/bin/Release/net8.0
./bfd9010.exeWindows Forms application that:
- Shows scanner status in always-on-top window
- Hosts FHIR REST API on port 5000
- Initializes scanner automatically
Shared library containing all scanner operations:
- Scanner initialization and discovery
- Scan operations
- Calibration
- Film ejection
- Configuration management
Standalone FHIR REST API server (can run without GUI).
GET /Device/{id}- Get scanner informationPOST /Device/{id}/$scan- Perform scan, returns PNG image as base64 in FHIR BundlePOST /Device/{id}/$calibrate- Calibrate scannerPOST /Device/{id}/$eject- Eject film
See FHIR Device Resource for detailed documentation of the FHIR standard for the Device.
See API README for detailed documentation.
This is an attempt to reverse engineer the USB protocol used to control the Vidar Dosimetry Pro scanner, in order to be able to control it directly from the BFD-9000 tool to acquire images.
It seems like the Vidar Scanner operates over USB, but the protocol used is SCSI. Since these scanners have been around for a while, it is very likely they were once SCSI, and then they moved to the USB at a hardware level, and kept the SCSI software, which makes sense.
This is how packet capture was performed for the Vidar Info operation:
- Download drivers from Vidar
- Install on Windows 10 or earlier, or in compatibility mode.
- Install Wireshark and USBpcap.
- Wireshark might require you to copy the USBpcapCMD file into its extcap directory. Follow instructions, they are pretty simple.
- Connect Scanner, turn on, and start the Vidar Info app.
- Start Wireshark, and select the USB interface. Then tool around with Wireshark, until you find how to disable capturing from all devices and selecting the Vidar Scanner only.
- Start capturing packets.
- Start the Vidar Info app.
- Wait until it returns data from the scanner.
For more details on the reverse engineering process, see RE_Writeup.md.
.NET code in BFD9010.Cli. This is a console app that uses the Vscsi32.dll library to control the scanner. This is the most functional code so far.
It seems like the Vidar Scanner operates over USB, but the protocol used is SCSI. Since these scanners have been around for a while, it is very likely they were once SCSI, and then they moved to the USB at a hardware level, and kept the SCSI software, which makes sense.
