diff --git a/channels/chan_brcm.c b/channels/chan_brcm.c
index 9eb146a7f473ec4a3d10899e06ad8cc049022385..b995dd962b4f102dd1e114f606e506a237457306 100644
--- a/channels/chan_brcm.c
+++ b/channels/chan_brcm.c
@@ -3201,7 +3201,7 @@ static int unload_module(void)
 	if (!ast_mutex_lock(&monlock)) {
 		if (ubus_thread != AST_PTHREADT_NULL && ubus_thread != AST_PTHREADT_STOP) {
 			ast_verbose("Stopping ubus thread...\n");
-			pthread_cancel(ubus_thread);
+			pthread_kill(ubus_thread, SIGUSR2);
 			pthread_join(ubus_thread, NULL);
 			ubus_thread = AST_PTHREADT_STOP;
 			ast_verbose("ubus thread is stopped\n");