diff --git a/libs/freetdm/mod_openzap/mod_openzap.c b/libs/freetdm/mod_openzap/mod_openzap.c
index 9a1ac3423f..ea57d85688 100644
--- a/libs/freetdm/mod_openzap/mod_openzap.c
+++ b/libs/freetdm/mod_openzap/mod_openzap.c
@@ -1158,6 +1158,15 @@ static ZIO_SIGNAL_CB_FUNCTION(on_fxs_signal)
 			}
 		}
 		break;
+    case ZAP_SIGEVENT_PROGRESS:
+		{
+			if ((session = zap_channel_get_session(sigmsg->channel, 0))) {
+				channel = switch_core_session_get_channel(session);
+				switch_channel_mark_ring_ready(channel);
+				switch_core_session_rwunlock(session);
+			}
+		}
+		break;
     case ZAP_SIGEVENT_START:
 		{
 			zap_clear_flag_locked(sigmsg->channel, ZAP_CHANNEL_HOLD);
diff --git a/libs/freetdm/src/ozmod/ozmod_analog/ozmod_analog.c b/libs/freetdm/src/ozmod/ozmod_analog/ozmod_analog.c
index 167c230220..a17d70e85c 100644
--- a/libs/freetdm/src/ozmod/ozmod_analog/ozmod_analog.c
+++ b/libs/freetdm/src/ozmod/ozmod_analog/ozmod_analog.c
@@ -477,8 +477,18 @@ static void *zap_analog_channel_run(zap_thread_t *me, void *obj)
 				break;
 			case ZAP_CHANNEL_STATE_GENRING:
 				{
+					zap_sigmsg_t sig;
+
 					send_caller_id(zchan);
 					zap_channel_command(zchan, ZAP_COMMAND_GENERATE_RING_ON, NULL);
+
+					memset(&sig, 0, sizeof(sig));
+					sig.chan_id = zchan->chan_id;
+					sig.span_id = zchan->span_id;
+					sig.channel = zchan;
+					sig.event_id = ZAP_SIGEVENT_PROGRESS;
+					analog_data->sig_cb(&sig);
+					
 				}
 				break;
 			case ZAP_CHANNEL_STATE_GET_CALLERID: