Hallo Andreas,
Many thanks for writing the Python script for the IC-9700. Even though I do have a IC-9700, I only use it for terrestrial work. I’m using a IC-9100 on the birds. I adapted your script for the IC-9100. The IC-9100 does not have a CAT command for RIT so I had to adapt the script to adjust the main and sub VFO frequencies. But that’s easy, you did all the hard work!
I also made some other changes, including the ability to interface it with Gqrx for (up to three) panadapters. This is from the comments I included in the gp2ic9100 script that describe the changes I made:
The original script has been adapted for use with the Icom IC-9100. The IC-9100 does
not support CAT control for RIT like the IC-9700 does for which the script was originally
developed. This script will, through the ic9100.py module, adjust
the main and sub VFO frequency for the offset read from the satellites.txt file. By
applying the frequency offset to the main and sub VFO's you will still be able to use
the RIT on the radio when needed.
This modified script also adds support for up to three Gqrx instances to act as
panadapters, or to use as separate receivers. The frequencies that the Gqrx instances are
tuned to are in sync with the radio main and sub VFO's. The Gqrx ports that this script
will send frequency information to are defined by PORT_GQRX_VHF, PORT_GQRX_UHF, and
PORT_GQRX_SHF.
A little extra excepton information has been added. Most print statements have been
removed or commented out to improve performance. It probably would have been better to
add a debug option that would print relevant info, but I'm lazy. :)
This modified script will easily allow for Gpredict frequency updates every 250ms.
Gpredict and the Gqrx instances will track with with the radio if the frequency on the
IC-9100 is changed using the main dial.
I have tested this only on a Raspberry Pi 4B (4Gb version) with FM and linear satellites.
You probably use the USB connection with the IC-9100, but I use a USB to Serial adapter and a traditional CI-V interface using the “remote” port on the radio. A problem that occurs with a traditional interface is that all commands you send to the CI-V adapter get echoed back because CI-V is a single wire bus system. So you receive whatever you send. I made a change to the receive routine to drop all the received frames but the last frame. This will prevent the script from trying to interpret the CI-V command it sends as data being received from the radio.
For anyone wanting to use my adapted version for the IC-9100 please note that CI-V transceive should be off on the radio.(Menu item 62 on the IC9100.)
I guess I should get a Github account, but if you’re curious everyone can download my IC-9100 version of your scripts here:
http://www.kr1st.com/downloads/gp2ic9100.zip
Besides for not allowing to define an offset per satellite in Gpredict, a real problem is that Gpredict puts the radio in satellite mode when it attempts to adjust for doppler. That mode should only be used for manual control of doppler, not when using CI-V control. Your script does it the right way. By enabling the satellite mode and then try to adjust the VFO’s for doppler through CI-V you end up with two algorithms that are fighting each other. One in Gpredict, and the other in the radio. Every time Gpredict sends the calculated frequency for, say, the downlink to the radio, the radio calculates a new uplink and adjusts the VFO for the uplink frequency. This makes it virtually impossible to be on the correct frequency on a linear satellite. Even if you manage to get on the correct frequency, it will last only for a very short while, and it will get frustrating very quickly.
I too was considering making changes to Gpredict, but I don’t have an environment set up for compiling and debugging the Gpredict source. Your script provided a great solution I could easily build on. I’m very grateful for your work and making it available. Of course I’m also very grateful for the Gpredict and Gqrx software! These products make it fun to use something as simple as a Raspberry Pi and turn it into a self contained satellite ground station.
Below is a screenshot of the Rpi running Gpredict, two instances of Gqrx, and gp2ic9100. On the top Gqrx instance you can see my downlink signal on CAS-4B this afternoon while CAS-4A is also in view. You can also see the FM downlink signal of PO-101 as well. As you can see on the map, it was very busy above my QTH this afternoon. The Gqrx instance below that shows the uplink. The RTL-SDR dongle on the uplink gets horribly overloaded while I’m transmitting.
I have three RTL-SDR dongles (HF/VHF/UHF) attached to the IC-9100 at various tap points, so I will always be able to monitor the downlink and uplink at the same time and never have to toggle between them for U/V or V/U satellites.
Sorry for the long post. 
73,
–Alex KR1ST