diff --git a/net-mqtt.cabal b/net-mqtt.cabal
--- a/net-mqtt.cabal
+++ b/net-mqtt.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           net-mqtt
-version:        0.8.6.1
+version:        0.8.6.2
 synopsis:       An MQTT Protocol Implementation.
 description:    Please see the README on GitHub at <https://github.com/dustin/mqtt-hs#readme>
 category:       Network
@@ -44,20 +44,20 @@
     , attoparsec-binary >=0.2 && <1.0
     , base >=4.7 && <5
     , binary >=0.8.5 && <0.9
-    , bytestring >=0.10.8 && <0.12
+    , bytestring >=0.10.8 && <0.13
     , conduit >=1.3.1 && <1.5
     , conduit-extra >=1.3.0 && <1.5
     , containers >=0.5.0 && <0.7
     , crypton-connection >=0.3.0
     , data-default-class >=0.1.2
-    , deepseq >=1.4.3.0 && <1.5
+    , deepseq >=1.4.3.0 && <1.6
     , monad-loops >=0.4.3
     , network-conduit-tls ==1.4.*
     , network-uri >=2.6.1 && <2.7
     , stm >=2.4.0 && <2.6
-    , text >=1.2.3 && <2.1.0
+    , text >=1.2.3 && <2.2.0
     , time >=1.9
-    , websockets >=0.12.5.3 && <0.13
+    , websockets >=0.12.5.3 && <0.14
   default-language: Haskell2010
 
 executable mqtt-example
@@ -74,21 +74,21 @@
     , attoparsec-binary >=0.2 && <1.0
     , base >=4.7 && <5
     , binary >=0.8.5 && <0.9
-    , bytestring >=0.10.8 && <0.12
+    , bytestring >=0.10.8 && <0.13
     , conduit >=1.3.1 && <1.5
     , conduit-extra >=1.3.0 && <1.5
     , containers >=0.5.0 && <0.7
     , crypton-connection >=0.3.0
     , data-default-class >=0.1.2
-    , deepseq >=1.4.3.0 && <1.5
+    , deepseq >=1.4.3.0 && <1.6
     , monad-loops >=0.4.3
     , net-mqtt
     , network-conduit-tls ==1.4.*
     , network-uri >=2.6.1 && <2.7
     , stm >=2.4.0 && <2.6
-    , text >=1.2.3 && <2.1.0
+    , text >=1.2.3 && <2.2.0
     , time >=1.9
-    , websockets >=0.12.5.3 && <0.13
+    , websockets >=0.12.5.3 && <0.14
   default-language: Haskell2010
 
 executable mqtt-watch
@@ -111,16 +111,16 @@
     , containers >=0.5.0 && <0.7
     , crypton-connection >=0.3.0
     , data-default-class >=0.1.2
-    , deepseq >=1.4.3.0 && <1.5
+    , deepseq >=1.4.3.0 && <1.6
     , monad-loops >=0.4.3
     , net-mqtt
     , network-conduit-tls ==1.4.*
     , network-uri >=2.6.1 && <2.7
     , optparse-applicative
     , stm >=2.4.0 && <2.6
-    , text >=1.2.3 && <2.1.0
+    , text >=1.2.3 && <2.2.0
     , time >=1.9
-    , websockets >=0.12.5.3 && <0.13
+    , websockets >=0.12.5.3 && <0.14
   default-language: Haskell2010
 
 test-suite mqtt-test
@@ -144,14 +144,14 @@
     , attoparsec-binary >=0.2 && <1.0
     , base >=4.7 && <5
     , binary >=0.8.5 && <0.9
-    , bytestring >=0.10.8 && <0.12
+    , bytestring >=0.10.8 && <0.13
     , checkers
     , conduit >=1.3.1 && <1.5
     , conduit-extra >=1.3.0 && <1.5
     , containers >=0.5.0 && <0.7
     , crypton-connection >=0.3.0
     , data-default-class >=0.1.2
-    , deepseq >=1.4.3.0 && <1.5
+    , deepseq >=1.4.3.0 && <1.6
     , lens
     , monad-loops >=0.4.3
     , mtl
@@ -163,7 +163,7 @@
     , tasty-discover
     , tasty-hunit
     , tasty-quickcheck
-    , text >=1.2.3 && <2.1.0
+    , text >=1.2.3 && <2.2.0
     , time >=1.9
-    , websockets >=0.12.5.3 && <0.13
+    , websockets >=0.12.5.3 && <0.14
   default-language: Haskell2010
diff --git a/src/Network/MQTT/Client.hs b/src/Network/MQTT/Client.hs
--- a/src/Network/MQTT/Client.hs
+++ b/src/Network/MQTT/Client.hs
@@ -63,7 +63,9 @@
 import qualified Data.Map.Strict.Decaying   as Decaying
 import           Data.Maybe                 (fromJust, fromMaybe)
 import           Data.Text                  (Text)
+import qualified Data.Text.Lazy             as TL
 import qualified Data.Text.Encoding         as TE
+import qualified Data.Text.Lazy.Encoding    as TEL
 import           Data.Word                  (Word16)
 import           GHC.Conc                   (labelThread)
 import           Network.Connection         (ConnectionParams (..), TLSSettings (..), connectTo, connectionClose,
@@ -203,7 +205,7 @@
     cid _ ('#':xs) = xs
     cid _ _        = ""
 
-    up "" = (Nothing, Nothing)
+    up "" = (_username, _password)
     up x = let (u,r) = break (== ':') (init x) in
              (Just (unEscapeString u), if r == "" then Nothing else Just (unEscapeString $ tail r))
 
@@ -328,7 +330,7 @@
       void . runConduit $ do
         let req = connectRequest{T._connID=BC.pack _connID,
                                  T._lastWill=_lwt,
-                                 T._username=BC.pack <$> _username,
+                                 T._username=TEL.encodeUtf8 . TL.pack <$> _username,
                                  T._password=BC.pack <$> _password,
                                  T._cleanSession=_cleanSession,
                                  T._connProperties=_connProps}
