Loading new firmware onto the LPC 1758 is done in two steps. If your FiFi-SDR was delivered by FUNKAMATEUR and you want to upgrade your firmware, please jump directly to step 2, as the bootloader is already installed on your SDR.
1. Copying over the bootloader
A special programming device is necessary to copy over the bootloader. The controller can be programmed (by JTAG) via the 1.27mm miniature DIL pins.
Alternatively this can be done using the factory-fitted integrated serial bootloader and the ISP interface that is accessible via solder pads (RXD, TXD, RESET, ISP and ground). Using these pads, the bootloader can be programmed with, for example, the lpc21isp program in the CPU. Just an RS232 voltage adapter to 3.3V (e.g. MAX3232A) is necessary for this.
WARNING: the pads must not under any circumstances be directly connected to a PC or a USB-serial adapter - this would destroy the controller! Use only 3.3V logic.
2. Firmware upload
The firmware upload is child's play once the bootloader has been copied over. Hold the button while connecting the USB port of the SDR. This causes the SDR to register with the PC as a USB mass storage device. The old firmware is on the drive. This file must be deleted and the required new firmware (.bin) is copied to the drive. After waiting ten seconds, the SDR can be disconnected from the USB port. The next time it is connected (without holding the button) the newly loaded firmware will be executed.
If you built your FiFi-SDR yourself and want to use it for the very first time, it is necessary to program the CPLD module. For this, a special firmware is first copied over that programs the CPLD. The procedure for this is described on the CPLD programming page.
Firmware with DSP function
This firmware is based on a totally newly written software that automatically decodes AM, FM and SSB signals. The output of the LF signal is via a second emulated USB sound card with a 12kHz sampling rate. Parallel to LF, the I/Q signals continue to be output on the first sound card. The DSP function is only available if the I/Q signals are sampled at 48 kHz.
This firmware enables the use of programs that expect LF as the input signal. A prominent example of this is the first-class program fldigi for digital operational modes. fldigi already works perfectly under Linux together with the FiFi SDR if the libhamlib library as from version 1.2.13 is used. As from this version support is included in the libhamlib for the test firmware of the FiFi SDR. As fldigi statically links the libhamlib under Windows, we will have to wait until a new version of fldigi with libhamlib 1.2.13 is released :-(
A previously reported problem with Quisk has been solved. It was caused by a bug in our hardware support script for the FiFi-SDR.
Requests less USB bandwidth.
Revert some changes to USB audio descriptors to ensure continued compatibility with RJ10FiFi (which is very restrictive when detecting the FiFi-SDR)
First practical AGC for SSB operation. Improvements when controlling the Receiver via standard audio controls of Linux and Windows.
Fixes a bug, where the FiFi-SDR wouldn't restart correctly after a warm start of the PC.
First version for hardware revision 2.0 (192 kHz sound card). Can be used on all older hardware revisions (1.x) as well.
Implement USB Suspend/Resume. Unmodified hardware: Suspend mode current 2.5 mA. With simple hardware modification: 450 µA.
Changing the scheduler to RTX (http://www.keil.com/pr/article/1253.htm). FreeRTOS can however continue to be used because of CMSIS-RTOS. In addition a small error in the 16/32-bit switchover has been cleared.
First version of the new firmware. Supports 16 and 32-bit formats for the I/Q signals.
The following versions are based on an old test firmware and will not be developed further. These versions do not yet contain an FM demodulator.
Adaptation to a new version of libhamlib.
Old firmware version without DSP functions (only for FiFi-SDR 1.x!)
The following table lists the firmware versions to date. Alterations to the previous issue have been described briefly in the Notes column. On the one hand this table will advise of an update, on the other hand it can assist in narrowing down a possible fault to specific alterations by loading an older version. Versions that were intended as an update have been highlighted in color; the others versions were development issues that should not normally be used. Clicking on the version number leads to a log entry with the alterations; the direct link enables downloading of the firmware.
Pin X6.8 (or SV1.12 on the preselector) can now be controlled from the PC application with the PTT switch. The pin is high when the PTT is active.
The pin is part of the 4-bit pattern for the preselector (presel_mode=1), but is not used by the FiFi preselector (needs three pins). For (presel_mode=1) everything remains the same. To use the PTT function, Mode 3 must be set using rockprog. This mode presents no restriction for operation with the FiFi preselector.
rockprog -w --presel --mode=3
Corrects an error in firmware 336. Rockprog can set the offset again (rockprog --offset ...)
Rapidly following parameter alterations (e.g. with CFGSR)) can sometimes lead to a firmware crash. Alterations will now be collected and saved with a delay of one second after the last alteration.
Note: the frequency offset cannot be altered using rockprog in this firmware issue. Please use a newer version.
This version corrects a major error in the frequency adjustment. Because of an error when saving the 'Smoothtune' value for the Si570 it could happen that small frequency adjustments caused the VCO to spring back to its factory settings. It needed a large frequency change to bring the VCO back to the right frequency.
Quarz calibration can now also be done using CFGSR.
Small alteration for switching the amplification of the sound card. 0/-6dB seems to be more compatible with Linux than +6/0 db ...
Version number altered to V17.1 for softrock emulation (V15.12 until now). Tools such as Fred's CFGSR can recognize the FiFi SDR by the number 17.x and support its special functions.
0/6dB switch controllable by softrock interface. Support for this is in Quisk and Hamlib.
New version of CMSIS. New device header. No functional alteration.
A frequency offset can be specified in the FiFi SDR that is taken into account when setting the VCO. Although the offfset could also be specified earlier, it is used for the first time as from this version when setting the frequency. Drivers for the FiFi SDR must read this offset and apply it when setting the frequency. The well-known ExtIO_Si570.dll driver does this, as does the driver.
The SVN version of the sources from which the firmware was built can be read. If the sources have changed compared to the SVN version before translation this will not however be displayed (the version number remains the same).
The standard values for the preselector now correspond with the most recent version of the FiFi preselector.
These values are however not automatically used after a firmware update as the current values are not touched! Please use rockprog to bring your existing SDR up to the latest version. Now there is a version of the tool for Windows that can make use of the normal libusb-0.1.
Audio interrupt has been deleted again. It is not supported.
Small error removed.
Alteration for the USB audio interface; new interrupt endpoint.
It has been noticed that this is read under Linux but not under Windows. It will therefore be removed at the next opportunity.
Many internal alterations in connection with the RTOS. No alterations to functionality.
A mechanism to read the SVN version number has been incorporated. Currently 0 is output.
Defaults for the preselector. Name for sound card incorporated into USB descriptors.
Sideband swap for reception on the 3rd harmonic (requires CPLD update).
The third control line between CPU and CPLD that has so far been unused will now be used to get the CPLD to swap the sidebands (exchange of I and Q).
Simple power-saving mode for the CPU activated again (saves 20mA).
Correction of a serious error in frequency setting (the Si570 sometimes reverted to factory defaults).
Error with interrupt priority corrected. Earlier change to codec power down removed.
Major change to the audio DMA. DRM works as from now!