Read LICENSE.
Applying this modification CAN and WILL void the manufacturer's warranty. It introduces risks to itself and your antenna and transmitter beyond those in the manufacturer's firmware. Use of this PCB and sketch CAN and WILL damage any and all of these:
- The MFJ998 tuner itself and components in it.
- Any coax cables connected to this tuner's input and/or outputs.
- Any antennas connected via those cables.
- Any transmitting and/or amplifier equipment connected to those cables.
Why replace the as-designed PIC microprocessor?
In contesting scenarios, I found I could not always get the MFJ998RT to quickly tune to match at the frequency I wanted, and having to put a low power signal to it to force the tune causes QRM and takes time. This project adds a RFM69HCW 915MHz Wireless Transceiver with a maximum range of 500m. It allows direct telemetry of the tuner's state in both directions from the main operating shack. The tuner, for example, can be commanded to set itself to an operating frequency without sending any RF down its coax.
Design rationale
I chose the Arduino for the daughterboard because it is inexpensive, I am familiar with the development environment, and its pinout is more than enough to replace all the necessary functions for the remote version of the tuner.
- Remove the weatherproof cover.
- Remove the shield that covers the PIC18 uProc. That shield has three #6 machine screws, each with a locknut, three #4 machine screws, each with a locknut, and a #6 nut.
- Carefully pry the 28 pin PIC18 IC out of its socket. This is a "no holes" modification, so save the IC and you can restore factory operation by replacing it.
- Install this daughterboard as shown in the photo. Caution: it is possible to be
off-by-one row when pressing the daughterboard's header into the 28 pin socket.
Use a flashlight and peer underneath before you apply power!
- The tranceiver's antenna must extend straight up, at a right angle to the PCB. Don't worry about how it will get through the shield. There already is a hole for it.
- Place the 3D printed spacer part over the PCB. Its purpose is to insulate the
PCB traces from the shield.
- Put the unit back together, first the shield and then the weatherproof cover.
With only the SMD components installed (minus the RFM69, which cannot go in the reflow oven) use jumper wires between the partially assembled daughterboard with no arduino, and not plugged into the MFJ998 motherboard. See the TestHarnessSketch for detailed instructions for the jumpers. Only the RFM69 test fails. If anything else fails, this is your last chance to fix the SMD soldering!
All Tests
EEPROM write to address 0 and 0xfff0
EEPROM read from address 0 and 0xfff0
EEPROM write other values to address 0 and 0xfff0
EEPROM read from addresses
Init FREQ_DIV4 counter
FREQ_DIV4 counter high OK
FREQ_DIV4 input low OK
Got F/4
MSCP23S08 registers
0x0 =0xFF
0x1 =0x0
0x2 =0xC0
0x3 =0x80
0x4 =0xC0
0x5 =0x8
0x6 =0xBF
0x7 =0x40
0x8 =0xFF
0x9 =0xBF
LCD bits set to 0x1. LCD4 OK LCD5 OK LCD6 OK LCD7 OK
LCD bits set to 0x2. LCD4 OK LCD5 OK LCD6 OK LCD7 OK
LCD bits set to 0x4. LCD4 OK LCD5 OK LCD6 OK LCD7 OK
LCD bits set to 0x8. LCD4 OK LCD5 OK LCD6 OK LCD7 OK
Initial iSPI is OK (high)
Read pins 0xbf correct (PD is only low input)
extender WAKEUP_PIN OK (went low)
WAKEUP_PIN is in interrupt mask. OK
extender removed iSPI on WAKEUP high, OK
extender PD_PIN HIGH OK
Extender interrupt on PD high, OK
RFM69 TEST FAILED***********************
Solder the RFM69 transceiver into place. Add its antenna per the the notes here. Note that the TestHarnessSketch likely will no longer run without external power applied to your Test Machine (a Uno or Mega is recommended). USB-supplied power is insufficient to power the daughterboard once the RFM69 is in place.
MFJ998 daughter test harness (rev02)
Type A to test All. E to EEPROM, X to test extender, F for frequency divider
All Tests
EEPROM write to address 0 and 0xfff0
EEPROM read from address 0 and 0xfff0
EEPROM write other values to address 0 and 0xfff0
EEPROM read from addresses
Init FREQ_DIV4 counter
FREQ_DIV4 counter high OK
FREQ_DIV4 input low OK
Got F/4
MSCP23S08 registers
0x0 =0xFF
0x1 =0x0
0x2 =0xC0
0x3 =0x80
0x4 =0xC0
0x5 =0x8
0x6 =0xBF
0x7 =0x40
0x8 =0xFF
0x9 =0xBF
LCD bits set to 0x1. LCD4 OK LCD5 OK LCD6 OK LCD7 OK
LCD bits set to 0x2. LCD4 OK LCD5 OK LCD6 OK LCD7 OK
LCD bits set to 0x4. LCD4 OK LCD5 OK LCD6 OK LCD7 OK
LCD bits set to 0x8. LCD4 OK LCD5 OK LCD6 OK LCD7 OK
Initial iSPI is OK (high)
Read pins 0xbf correct (PD is only low input)
extender WAKEUP_PIN OK (went low)
WAKEUP_PIN is in interrupt mask. OK
extender removed iSPI on WAKEUP high, OK
extender PD_PIN HIGH OK
Extender interrupt on PD high, OK
RFM69 test passed
All tests passed
Now its OK to solder in the Arduino. Install a right angle header on the 6 pin side of the Arduio Pro Mini. See the photo for the required orientation. This header is used
to program the device.
The red wire is the transceiver's antenna.
Use the Arduino IDE to install mfj998sketch. The daughterboard must not be
plugged into the motherboard to program it through its 6-pin header.
Note: the Arduino serial port is routed through the daughterboard to the MFJ998's back panel serial connector, but without the DTR pin that the Arduino IDE uses to reset the device at programming time. The Arduino can be programmed as installed in the motherboard using a serial cable to the MFJ998's back panel using careful timing of the power switch and the Arduino "upload" button. See the Arduino documentation.
The CAD and STL directories contain the 3D designs of a couple of plastic parts that might be useful.Mfj998rtTerminalCover.STL
In my installation, the antenna is a wire connected to the tuner's wire terminal input, and the tuner is mounted with that hole facing up, and therefore with rainfall exposure. When not in use, I move the antenna wire to the adjacent grounded wingnut and pop this plastic part to offer better weather protection to the wire terminal.Mfj998LcdSpacer2.STL
Lightning destroyed the LCD in my MFJ998RT. I found the manufacturer's soldered-in header extremely difficult to remove with the dead part. To install the new device, I did not use a header but instead soldered 12 individual two inch long AWG 24 solid insulated wires for pins 1-6 and 11-16. Pins 7-10 are not used in the original. That resulted in an LCD that can be uninstalled relatively easily, but is not held in place securely. Print the part above and it properly frames the LCD in the window in the aluminum shield.While the main PCB on the MFJ998RT is nearly identical to the indoor version of the tuner, the MFJ998, and the daughterboard could obviously be plugged into that indoor version, this sketch does not support everything needed for the indoor version's operation. The PCB hardware connects all the same signals to the Arduino that were available to the original PIC processor, so maybe you can modify this code to be useful on the indoor model.
MFWD and MREF are routed to the Arduino, but are not supported by this sketch. The START line is also routed (it comes from the PIC band selector uProc on the motherboard) but is not supported in the sketch published here. The communication protocol for that PIC uProc is not, as far as I know, published by MFJ.