     return (RADIO_CHANNEL_COUNT + channel - RADIO_HOP_OFFSET) % RADIO_CHANNEL_COUNT;
 }
 
-void hopFrequency(volatile RadioState_t *radioState, bool forward, uint8_t fromChannel) {
-    radioState->channelEntryMillis = millis();
+void hopFrequency(volatile RadioState_t *radioState, bool forward, uint8_t fromChannel, uint32_t timestamp) {
+    radioState->channelEntryMillis = timestamp;
 
     if (forward) {
         radioState->channel = getNextChannel(fromChannel);

     * RX module hops to next channel after frame has been received
     */
#ifdef DEVICE_MODE_RX
    hopFrequency(radioState, true, radioState->lastReceivedChannel);
    radioState->failedDwellsCount = 0; // We received a frame, so we can just reset this counter
    LoRa.receive(); //Put radio back into receive mode
#endif

         * In case of TX module, hop right now
         */
#ifdef DEVICE_MODE_TX
        hopFrequency(&radioState, true, radioState.channel, millis());
#endif

        LoRa.receive();
