Fully open source hardware (USBtin) and software (USBtinSubProg & npkern) is available for flashing CAN-based Subarus. Currently experimental status. It relies upon using a USBtin CAN interface. I have not looked in every Subaru ROM out there, but it appears that this solution should work for many Subarus from ~2005 to the present day.
This solution also works for some later pre-CAN vehicles by connecting directly to the ECU on the bench (because some of these ECUs have the CAN bootloader and CAN connections even though the OBD port does not have CAN connections).
Full credit to fenugrec as original author of the kernels, which have been modified for use on CAN vehicles. Full credit to Thomas Fischl as creator of the USBtin. If you find this application useful please consider supporting those involved.
A brief 'how to' guide and further info can be found here:
https://github.com/rimwall/USBtinSubPro ... bProg_test and here:
https://github.com/rimwall/npkern/tree/ssm_can_testHelp requested:
1. I have successfully done bench flashing on a SH7058 ECU. I am seeking volunteers for in-car flashing - let me know if you are keen to help out.
2. My Java is novice-level - it would be wonderful if someone more skilled with Java could volunteer to help improve the application, particularly the error handling
3. So far a CAN kernel is available for SH7058 ECUs. This can be extended to other chips - let me know if you are interested