diff --git a/appliance_setup/device_types.py b/appliance_setup/device_types.py
index ef7596c311c1c8c06f0485a31fbcb1ebf9791f3c..3886f6b2422464782de27486cf063994b868c696 100755
--- a/appliance_setup/device_types.py
+++ b/appliance_setup/device_types.py
@@ -225,16 +225,17 @@ import re
 class Ether8888Packet:
   ethHeaderFmt = "!6s6sH"
   headerFmt = "<2s2s2sHH"
-  localAddr="\x00\x00\x00\x00\x00\x00"
+  localAddr="\0\0\0\0\0\0"
   remoteAddr="\xff\xff\xff\xff\xff\xff"
   proto = 0x8888
+  zero = "\0\0"
   def __init__ (self, localAddr="\x00\x00\x00\x00\x00\x00", remoteAddr="\xff\xff\xff\xff\xff\xff", proto=0x8888):
     self.proto = proto
     self.localAddr = localAddr
     self.remoteAddr = remoteAddr
 
   def decode (self, data):
-    self.dstAddr, self.srcAddr, self.proto = struct.unpack(self.ethHeaderFmt,data[:14])
+    self.localAddr, self.remoteAddr, self.proto = struct.unpack(self.ethHeaderFmt,data[:14])
     if self.proto != 0x8888:
       # FIXME: Error message about invalid packet
       return False
@@ -250,7 +251,9 @@ class Ether8888Packet:
 
   def encode (self, cmd, unknown, nrPackets, dataLen, data):
     # Ethernet II header
-    d = struct.pack(self.ethHeaderFmt, self.dstAddr, self.srcAddr, self.proto)
+    (self.cmd, self.unknown, self.nrPackets, self.dataLen,self.payload) = (cmd, unknown, nrPackets, dataLen, data)
+    
+    d = struct.pack(self.ethHeaderFmt, self.remoteAddr, self.localAddr, self.proto)
     d += struct.pack (self.headerFmt, self.cmd, self.unknown, self.zero,
                       self.nrPackets, self.dataLen)
     d += data
@@ -296,9 +299,9 @@ class Ether8888DeviceFactory (DeviceFactory):
           for sock in sread:
             rxFrame = sock.recv (1500)
             pack = Ether8888Packet()
-            if pack.decode (rxFrame) and (not pack.dstAddr == bcAddr):
+            if pack.decode (rxFrame) and (not pack.remoteAddr == bcAddr):
               ifName,ifProto,pktType,hwType,hwAddr = sock.getsockname()
-              devices.append (Ether8888Device (ui, ifName, ifProto, pack.srcAddr, "Vonets VAP11G wireless bridge"));
+              devices.append (Ether8888Device (ui, ifName, ifProto, pack.localAddr, "Vonets VAP11G wireless bridge"));
         for s in sockets:
           s.close ();
 
@@ -365,7 +368,7 @@ class Ether8888Device (Device):
 
   def bulk_data_write (self, data, length):
     packet = Ether8888Packet (localAddr = self.localAddr, remoteAddr = self.remoteAddr)
-    request = packet.encode ("\x01\x01", "\0\0", "\0\0", 0, length, data)
+    request = packet.encode ("\x01\x01", "\0\0", 0, length, data)
     self.ui.debug ("Request: " + request)
     res = None
     try: