diff --git a/src/channels/chan_voicemngr.c b/src/channels/chan_voicemngr.c
index db048d1dd8079a352656a0798e98c50c34a99297..24162ff433fd97267c33b54c921033929a74261e 100644
--- a/src/channels/chan_voicemngr.c
+++ b/src/channels/chan_voicemngr.c
@@ -700,29 +700,20 @@ static void endpt_signal(int line, char *signal, char *state, char *data) {
 static int chan_voicemngr_send_ubus_event(char *ev_name, int line)
 {
 	struct blob_buf blob;
-	struct ubus_context *ubusctx;
 	int res = 0;
 
-	ubusctx = ubus_connect(NULL);
-	if (!ubusctx) {
-		return -1;
-	}
-
 	memset(&blob, 0, sizeof(blob));
 	if(blob_buf_init(&blob, 0)) {
-		ast_ubus_free_context(ubusctx);
 		return -1;
 	}
 
 	blobmsg_add_u32(&blob, "id", line);
 	blobmsg_add_string(&blob, "event", ev_name);
-
-	if (ubus_send_event(ubusctx, broadcast_path, blob.head) != UBUS_STATUS_OK) {
+	if (ubus_send_event(get_shared_context(__FUNCTION__), broadcast_path, blob.head) != UBUS_STATUS_OK) {
 		ast_log(LOG_NOTICE,"Error sending ubus message %s\n", ev_name);
 		res = -1;
 	}
 
-	ast_ubus_free_context(ubusctx);
 	blob_buf_free(&blob);
 
 	return res;
@@ -1750,7 +1741,7 @@ static int chan_voicemngr_classify_rtp_packet(int payload_type) {
 		if (voicemngr_codecs[i].rtp_payload_type == payload_type)
 			return CHAN_VOICEMNGR_AUDIO;
 
-	ast_verbose("Unknown rtp packet payload_type %d\n", payload_type);
+	ast_debug(3, "Unknown RTP payload_type %d\n", payload_type);
 	return CHAN_VOICEMNGR_UNKNOWN;
 }
 
@@ -1760,7 +1751,7 @@ static int map_ast_codec_id_to_rtp(const struct ast_format *astcodec)
 		if (ast_format_cmp(astcodec, *voicemngr_codecs[i].ast_format) == AST_FORMAT_CMP_EQUAL)
 			return voicemngr_codecs[i].rtp_payload_type;
 
-	ast_verbose("Unknown asterisk format/codec\n");
+	ast_debug(3, "Unknown asterisk format(%s), return PCMA\n", ast_format_get_name(astcodec));
 	return RTP_PT_PCMA;
 }
 
@@ -3286,6 +3277,7 @@ static void audio_packet_handler(pe_packet_t *p) {
 			line_stats[sip_client_id].txpkts++;
 			line_stats[sip_client_id].txbytes += frame.datalen;
 		}
+
 		// write header values into frame so asterisk uses the same RTP header as DSP
 		frame.seqno = (ntohl(packet_buf32[0]) & 0xffff);
 		frame.ts =  ntohl(packet_buf32[1]);
@@ -5011,7 +5003,6 @@ static void ubus_call_answer_rtp_stats(struct ubus_request *req, int type, struc
 }
 
 static int endpt_get_rtp_stats(int line) {
-	struct ubus_context *local_ctx;
 	struct blob_buf bb;
 	int ret;
 	struct chan_voicemngr_pvt *p = NULL;
@@ -5039,12 +5030,6 @@ static int endpt_get_rtp_stats(int line) {
 		return -1;
 	}
 
-	local_ctx = ubus_connect(NULL);
-	if (!local_ctx) {
-		ast_log(LOG_ERROR, "%s(): ubus_connect() failed\n", __func__);
-		return -1;
-	}
-
 	memset(&bb, 0, sizeof(bb));
 	if(blob_buf_init(&bb, 0)) {
 		return -1;
@@ -5052,12 +5037,9 @@ static int endpt_get_rtp_stats(int line) {
 
 	blobmsg_add_u32(&bb, "line", line);
 	blobmsg_add_u8(&bb, "reset", 1); // always reset RTP stats after get them
-
 	ast_log(LOG_DEBUG, "thread %d: ubus call endpt rtp_stats \"{'line':%d,'reset':true}\"", ast_get_tid(), line);
-	ret = ubus_invoke(local_ctx, endpt_id, "rtp_stats", bb.head, ubus_call_answer_rtp_stats, NULL, 500);
-
+	ret = ubus_invoke(get_shared_context(__FUNCTION__), endpt_id, "rtp_stats", bb.head, ubus_call_answer_rtp_stats, sub, 500);
 	blob_buf_free(&bb);
-	ast_ubus_free_context(local_ctx);
 
 	if (ret != UBUS_STATUS_OK) {
 		ast_log(LOG_DEBUG, "ubus_invoke for rtp_stats failed with return value %d\n", ret);