I found that using the library for controlling the FT-818 (instead of the FT-817) leads to some misbehavior when using VFOb. Some functions like toggleIPO() indirectly uses calcVFOaddr() to calculate the VFO address for a specific band. And this function seems to return a wrong address for VFOb.
As the FT-818 has one more band (60m), there is one more record in the memory map for VFOa and therefore the range for VFOb need to be shifted by 26 Bytes (= one record) to a higher address. The following patch exclusively for the FT-818 seems to work:
#define FT818
...
#ifdef FT818
unsigned int address = 0x7D + ((int)vfo * 416) + (band * 26);
#else
unsigned int address = 0x7D + ((int)vfo * 390) + (band * 26);
#endif
but should be further verified. Currently I have no clue whether other function calls are also working for the FT-818. For the time being, I would recommend not to write to the EEPROM until more investigation is done.
I found that using the library for controlling the FT-818 (instead of the FT-817) leads to some misbehavior when using VFOb. Some functions like toggleIPO() indirectly uses calcVFOaddr() to calculate the VFO address for a specific band. And this function seems to return a wrong address for VFOb.
As the FT-818 has one more band (60m), there is one more record in the memory map for VFOa and therefore the range for VFOb need to be shifted by 26 Bytes (= one record) to a higher address. The following patch exclusively for the FT-818 seems to work:
#define FT818
...
#ifdef FT818
unsigned int address = 0x7D + ((int)vfo * 416) + (band * 26);
#else
unsigned int address = 0x7D + ((int)vfo * 390) + (band * 26);
#endif
but should be further verified. Currently I have no clue whether other function calls are also working for the FT-818. For the time being, I would recommend not to write to the EEPROM until more investigation is done.