diff --git a/src/comio/comio_nix.c b/src/comio/comio_nix.c
index 449761264011ff3424a912cfcf6e7321f09b54c6..e5204898e85dfc76d0278db8fa1a5ef04a1fa2f9 100644
--- a/src/comio/comio_nix.c
+++ b/src/comio/comio_nix.c
@@ -150,12 +150,26 @@ int comGetModemStatus(COM_HANDLE handle)
 
 BOOL comRaiseDTR(COM_HANDLE handle)
 {
-	return(ioctl(handle, TIOCSDTR)==0);
+	int status;
+
+	if(ioctl(handle, TIOCMGET, &status)==-1)
+		return FALSE;
+	status |= TIOCM_DTR;
+	if(ioctl(handle, TIOCMSET, &status)==-1)
+		return FALSE;
+	return TRUE;
 }
 
 BOOL comLowerDTR(COM_HANDLE handle)
 {
-	return(ioctl(handle, TIOCCDTR)==0);
+	int status;
+
+	if(ioctl(handle, TIOCMGET, &status)==-1)
+		return FALSE;
+	status &= ~TIOCM_DTR;
+	if(ioctl(handle, TIOCMSET, &status)==-1)
+		return FALSE;
+	return TRUE;
 }
 
 BOOL comWriteByte(COM_HANDLE handle, BYTE ch)