<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.linux.network.networkmanager.devel">
    <title>gmane.linux.network.networkmanager.devel</title>
    <link>http://blog.gmane.org/gmane.linux.network.networkmanager.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21218"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21217"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21216"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21215"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21214"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21213"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21212"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21211"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21210"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21209"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21208"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21207"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21206"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21205"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21204"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21203"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21202"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21201"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21200"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21199"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21218">
    <title>Re: NM vlan config documentation ?</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21218</link>
    <description>&lt;pre&gt;Yes.

So please prepare a ifcfg file and put it in 
/etc/sysconfig/network-scripts/.

The example of ifcfg-vlan43 is as followed:
(src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-vlan-interface)

     VLAN=yes
     TYPE=Vlan
     DEVICE=vlan43  or "DEVICE=eth9.43"
     PHYSDEV=eth9
     REORDER_HDR=1
     VLAN_FLAGS=GVRP,LOOSE_BINDING
     VLAN_INGRESS_PRIORITY_MAP=0:1,2:5
     VLAN_EGRESS_PRIORITY_MAP=12:3,14:7
     ONBOOT=yes
     BOOTPROTO=static
     IPADDR=192.168.43.149
     NETMASK=255.255.255.0

     And we try to make it compitable with the format used by initscripts,
     and there is no need to change anything in ifcfg-eth9.

thanks
Weiping Pan
&lt;/pre&gt;</description>
    <dc:creator>Weiping Pan</dc:creator>
    <dc:date>2012-05-25T02:07:53</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21217">
    <title>NM vlan config documentation ?</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21217</link>
    <description>&lt;pre&gt;Hello all,

I would like to use some VLAN configuration with my NM 0.9.4.

However, it seems like the graphical interfaces do not support vlan 
config yet. So we have to do it in /etc/NetworkManager ?

Looking around on NM site and wiki, and the list archives, I did not 
find any Doc about how to configure VLAN connections.

I even tried to look in the source, but I'm not an expert.

Could you provide a sample config for VLAN config ? or I have to do it 
with dbus with some commands ?

Thanks in advance,
and for your work on NM!
Marc


&lt;/pre&gt;</description>
    <dc:creator>Marc MAURICE</dc:creator>
    <dc:date>2012-05-24T12:36:03</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21216">
    <title>Re: Strange issues in debian testing - persistent gsm connection</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21216</link>
    <description>&lt;pre&gt;
 

 

_______________________________________________
networkmanager-list mailing list
networkmanager-list&amp;lt; at &amp;gt;gnome.org
https://mail.gnome.org/mailman/listinfo/networkmanager-list
&lt;/pre&gt;</description>
    <dc:creator>PongráczI</dc:creator>
    <dc:date>2012-05-23T19:12:29</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21215">
    <title>Re: Little white window SECRET</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21215</link>
    <description>&lt;pre&gt;
The things that ask for secrets are provided by the desktop
environments.  So there's one for GNOME Shell, one for GNOME classic,
one for KDE, and so forth.  For KDE it's kde-plasma-networkmanagement
and part of the KDE sources.

Dan

&lt;/pre&gt;</description>
    <dc:creator>Dan Williams</dc:creator>
    <dc:date>2012-05-23T14:26:55</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21214">
    <title>Strange issues in debian testing, no idea what's going on</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21214</link>
    <description>&lt;pre&gt;

Hi,

On my debian testing (i486) I run into issue with my modem + recent 0.5.2 MM + kernel 3.2.0-2-486

Modem stopped working, so, I made two logs using modem-manager.

1st case: cannot use the modem, even cannot see in devices list etc.: modem-manager.connection-lost.log

2nd case: I pull out the modem and plug back after some seconds, it get known, tried to connect but dropped the connection immediately. modem-manager.connection-lost_new_plug.log

3rd case: reboot, working well.

The attached messages.log contains the end of the 2nd case and a normal operation (boot, activated, everything working well at this moment).

In fact, I have no idea, what is going on and why these things happen. I did not see any segfault. Even, last night it was working all the night, but in the morning I had several issues. 

It is possible, the weather is not so good here nowadays, probably the mobile service provider kicks out from the network, I do not know.

Could somebody check the logs, maybe you have more experiences.

Thank you!

IStván

 
&amp;lt;info&amp;gt;  [1337773534.332130] [main.c:167] main(): ModemManager (version 0.5.2.0) starting...
&amp;lt;info&amp;gt;  [1337773535.136193] [mm-manager.c:120] load_plugin(): Loaded plugin ZTE
&amp;lt;info&amp;gt;  [1337773535.157170] [mm-manager.c:120] load_plugin(): Loaded plugin Gobi
&amp;lt;info&amp;gt;  [1337773535.168162] [mm-manager.c:120] load_plugin(): Loaded plugin X22X
&amp;lt;info&amp;gt;  [1337773535.181725] [mm-manager.c:120] load_plugin(): Loaded plugin Novatel
&amp;lt;info&amp;gt;  [1337773535.193928] [mm-manager.c:120] load_plugin(): Loaded plugin Sierra
&amp;lt;info&amp;gt;  [1337773535.205966] [mm-manager.c:120] load_plugin(): Loaded plugin Option
&amp;lt;info&amp;gt;  [1337773535.216908] [mm-manager.c:120] load_plugin(): Loaded plugin Huawei
&amp;lt;info&amp;gt;  [1337773535.231988] [mm-manager.c:120] load_plugin(): Loaded plugin MotoC
&amp;lt;info&amp;gt;  [1337773535.242999] [mm-manager.c:120] load_plugin(): Loaded plugin AnyData
&amp;lt;info&amp;gt;  [1337773535.256385] [mm-manager.c:120] load_plugin(): Loaded plugin Linktop
&amp;lt;info&amp;gt;  [1337773535.267157] [mm-manager.c:120] load_plugin(): Loaded plugin Option High-Speed
&amp;lt;info&amp;gt;  [1337773535.280797] [mm-manager.c:120] load_plugin(): Loaded plugin Generic
&amp;lt;info&amp;gt;  [1337773535.293368] [mm-manager.c:120] load_plugin(): Loaded plugin Nokia
&amp;lt;info&amp;gt;  [1337773535.305709] [mm-manager.c:120] load_plugin(): Loaded plugin Ericsson MBM
&amp;lt;info&amp;gt;  [1337773535.316779] [mm-manager.c:120] load_plugin(): Loaded plugin Longcheer
&amp;lt;info&amp;gt;  [1337773535.331753] [mm-manager.c:120] load_plugin(): Loaded plugin Samsung
&amp;lt;info&amp;gt;  [1337773535.343101] [mm-manager.c:120] load_plugin(): Loaded plugin Wavecom
&amp;lt;info&amp;gt;  [1337773535.356869] [mm-manager.c:120] load_plugin(): Loaded plugin SimTech
&amp;lt;debug&amp;gt; [1337773535.420155] [mm-manager.c:809] device_added(): (tty/ttyS0): port's parent platform driver is not whitelisted
&amp;lt;debug&amp;gt; [1337773535.433230] [mm-manager.c:809] device_added(): (tty/ttyS1): port's parent platform driver is not whitelisted
&amp;lt;debug&amp;gt; [1337773535.445574] [mm-manager.c:809] device_added(): (tty/ttyS2): port's parent platform driver is not whitelisted
&amp;lt;debug&amp;gt; [1337773535.457176] [mm-manager.c:809] device_added(): (tty/ttyS3): port's parent platform driver is not whitelisted
&amp;lt;info&amp;gt;  [1337773535.490697] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB0) opening serial port...
&amp;lt;debug&amp;gt; [1337773535.511986] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB0) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773535.521997] [mm-plugin-base.c:859] try_open(): (ttyUSB0): probe requested by plugin 'ZTE'
&amp;lt;info&amp;gt;  [1337773535.534469] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB1) opening serial port...
&amp;lt;debug&amp;gt; [1337773535.545086] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB1) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773535.557244] [mm-plugin-base.c:859] try_open(): (ttyUSB1): probe requested by plugin 'ZTE'
&amp;lt;info&amp;gt;  [1337773535.568595] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB2) opening serial port...
&amp;lt;debug&amp;gt; [1337773535.581319] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773535.590496] [mm-plugin-base.c:859] try_open(): (ttyUSB2): probe requested by plugin 'ZTE'
&amp;lt;debug&amp;gt; [1337773535.639960] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773535.676131] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773535.711254] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773536.734850] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CPMS: "ME",2,100,"ME",2,100,"ME",2,100&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773536.747539] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773536.779409] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CPMS: "ME",2,100,"ME",2,100,"ME",2,100&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773536.790237] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773537.489255] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+GCAP: +CGSM,+FCLASS,+DS&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773537.505838] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB1) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773539.399267] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB1) closing serial port...
&amp;lt;info&amp;gt;  [1337773539.426643] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB1) serial port closed
&amp;lt;debug&amp;gt; [1337773539.571347] [mm-modem-base.c:155] mm_modem_base_add_port(): (ttyUSB1) type secondary claimed by /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;info&amp;gt;  [1337773539.795639] [mm-manager.c:564] do_grab_port(): (ZTE): GSM modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3 claimed port ttyUSB1
&amp;lt;debug&amp;gt; [1337773539.804533] [mm-manager.c:317] add_modem(): Added modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773539.814057] [mm-manager.c:243] check_export_modem(): (tty/ttyUSB0): outstanding support task prevents export of /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773539.826102] [mm-manager.c:243] check_export_modem(): (tty/ttyUSB0): outstanding support task prevents export of /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773539.835686] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+GCAP: +CGSM,+FCLASS,+DS&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773539.848248] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773539.857323] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB2) closing serial port...
&amp;lt;info&amp;gt;  [1337773539.868614] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB2) serial port closed
&amp;lt;debug&amp;gt; [1337773539.884302] [mm-modem-base.c:155] mm_modem_base_add_port(): (ttyUSB2) type primary claimed by /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;info&amp;gt;  [1337773539.894529] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB2) opening serial port...
&amp;lt;debug&amp;gt; [1337773539.906195] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773539.918049] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 2 (open)
&amp;lt;debug&amp;gt; [1337773539.927266] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 3 (open)
&amp;lt;info&amp;gt;  [1337773539.950652] [mm-manager.c:564] do_grab_port(): (ZTE): GSM modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3 claimed port ttyUSB2
&amp;lt;debug&amp;gt; [1337773539.960133] [mm-manager.c:243] check_export_modem(): (tty/ttyUSB0): outstanding support task prevents export of /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773539.970484] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773540.002484] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773540.341022] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GMI&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773540.350517] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773540.392040] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;ZTE INCORPORATED&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773540.721146] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GMM&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773540.762380] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;MF668A&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773541.190624] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GMR&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773541.243975] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;BD_MF668AV1.0.1B02&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773541.563843] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGMI&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773541.626947] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;ZTE INCORPORATED&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773541.934543] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGMM&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773541.995176] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;MF668A&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773542.302684] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGMR&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773542.355702] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;BD_MF668AV1.0.1B02&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773542.671901] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATI&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773542.715144] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Manufacturer: ZTE INCORPORATED&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Model: MF668A&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Revision: BD_MF668AV1.0.1B02&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;IMEI: 864851005185039&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+GCAP: +CGSM,+FCLASS,+DS&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773543.059514] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATI1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773543.778736] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Manufacturer: ZTE INCORPORATED&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Model: MF668A&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Revision: BD_MF668AV1.0.1B02&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;IMEI: 864851005185039&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+GCAP: +CGSM,+FCLASS,+DS&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773543.802197] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GSN&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773543.862503] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;864851005185039&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773543.874542] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGSN&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773543.950214] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;864851005185039&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773543.962166] [mm-modem-helpers.c:920] mm_create_device_identifier(): Device ID source '000019d200000117Manufacturer:ZTEINCORPORATEDModel:MF668ARevision:BD_MF668AV1.0.1B02IMEI:864851005185039+GCAP:+CGSM,+FCLASS,+DS864851005185039BD_MF668AV1.0.1B02MF668AZTEINCORPORATED'
&amp;lt;debug&amp;gt; [1337773543.973275] [mm-modem-helpers.c:921] mm_create_device_identifier(): Device ID 'b735f6159cf589e85f8a66cfff7b0bd4eea1a73a'
&amp;lt;debug&amp;gt; [1337773543.982603] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 2 (close)
&amp;lt;debug&amp;gt; [1337773543.992216] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773544.038260] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773544.048762] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 1 (close)
&amp;lt;debug&amp;gt; [1337773544.059481] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CMEE=1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773544.142524] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773544.155010] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CPIN?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773544.231146] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CPIN: READY&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773544.240849] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 2 (open)
&amp;lt;debug&amp;gt; [1337773544.250372] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 1 (close)
&amp;lt;debug&amp;gt; [1337773544.262606] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CRSM=176,12258,0,0,10&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773544.827472] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CRSM: 144,0,"986302003053001571F2"&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773544.838623] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773544.848121] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB2) closing serial port...
&amp;lt;info&amp;gt;  [1337773544.860238] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB2) serial port closed
&amp;lt;debug&amp;gt; [1337773544.871586] [mm-generic-gsm.c:507] get_iccid_done(): SIM ID source '8936200003350051172'
&amp;lt;debug&amp;gt; [1337773544.880645] [mm-generic-gsm.c:508] get_iccid_done(): SIM ID '77ac780d92e5c18295a5d48747eaa490ab1b8473'
&amp;lt;debug&amp;gt; [1337773544.890488] [mm-manager.c:243] check_export_modem(): (tty/ttyUSB0): outstanding support task prevents export of /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773547.151968] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773552.156471] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773556.148942] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773560.149383] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773564.154098] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773568.150344] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773570.759048] [mm-serial-port.c:636] data_available(): (ttyUSB0) unexpected port hangup!
&amp;lt;debug&amp;gt; [1337773571.569620] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB0) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773571.620216] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB0) closing serial port...
&amp;lt;info&amp;gt;  [1337773571.629584] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB0) serial port closed
mm_serial_port_close: assertion `priv-&amp;gt;open_count &amp;gt; 0' failed&amp;lt;info&amp;gt;  [1337773571.658086] [mm-manager.c:862] device_removed(): (tty/ttyUSB1): released by modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773571.697520] [mm-modem-base.c:185] mm_modem_base_remove_port(): (ttyUSB1) type secondary removed from /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;info&amp;gt;  [1337773571.721814] [mm-manager.c:862] device_removed(): (tty/ttyUSB2): released by modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773571.745818] [mm-modem-base.c:185] mm_modem_base_remove_port(): (ttyUSB2) type primary removed from /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773571.757021] [mm-manager.c:204] remove_modem(): Removed modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
marshal_object: assertion `g_variant_is_object_path (path)' failedfailed to marshal parameter 1 for signal DeviceRemoved&amp;lt;info&amp;gt;  [1337773593.603675] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB1) opening serial port...
&amp;lt;debug&amp;gt; [1337773595.166112] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB1) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773596.380467] [mm-plugin-base.c:859] try_open(): (ttyUSB1): probe requested by plugin 'ZTE'
&amp;lt;info&amp;gt;  [1337773596.441247] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB0) opening serial port...
&amp;lt;debug&amp;gt; [1337773596.798584] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB0) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773596.812503] [mm-plugin-base.c:859] try_open(): (ttyUSB0): probe requested by plugin 'ZTE'
&amp;lt;info&amp;gt;  [1337773596.827215] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB2) opening serial port...
&amp;lt;debug&amp;gt; [1337773596.842199] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773596.854463] [mm-plugin-base.c:859] try_open(): (ttyUSB2): probe requested by plugin 'ZTE'
&amp;lt;debug&amp;gt; [1337773596.868625] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773596.929885] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773596.970087] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773597.924967] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CPMS: "ME",2,100,"ME",2,100,"ME",2,100&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773597.938927] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773598.032484] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CPMS: "ME",2,100,"ME",2,100,"ME",2,100&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773598.046164] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773598.683251] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+GCAP: +CGSM,+FCLASS,+DS&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773598.695905] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB1) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773598.706381] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB1) closing serial port...
&amp;lt;info&amp;gt;  [1337773598.722352] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB1) serial port closed
&amp;lt;debug&amp;gt; [1337773598.811486] [mm-modem-base.c:155] mm_modem_base_add_port(): (ttyUSB1) type secondary claimed by /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;info&amp;gt;  [1337773598.833879] [mm-manager.c:564] do_grab_port(): (ZTE): GSM modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3 claimed port ttyUSB1
&amp;lt;debug&amp;gt; [1337773598.847680] [mm-manager.c:317] add_modem(): Added modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773598.859674] [mm-manager.c:243] check_export_modem(): (tty/ttyUSB0): outstanding support task prevents export of /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773598.869863] [mm-manager.c:243] check_export_modem(): (tty/ttyUSB0): outstanding support task prevents export of /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773598.896390] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+GCAP: +CGSM,+FCLASS,+DS&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773598.910120] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773598.920467] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB2) closing serial port...
&amp;lt;info&amp;gt;  [1337773598.931240] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB2) serial port closed
&amp;lt;debug&amp;gt; [1337773598.954872] [mm-modem-base.c:155] mm_modem_base_add_port(): (ttyUSB2) type primary claimed by /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;info&amp;gt;  [1337773598.967896] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB2) opening serial port...
&amp;lt;debug&amp;gt; [1337773598.981707] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773598.991594] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 2 (open)
&amp;lt;debug&amp;gt; [1337773599.343825] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 3 (open)
&amp;lt;info&amp;gt;  [1337773599.353955] [mm-manager.c:564] do_grab_port(): (ZTE): GSM modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3 claimed port ttyUSB2
&amp;lt;debug&amp;gt; [1337773599.363049] [mm-manager.c:243] check_export_modem(): (tty/ttyUSB0): outstanding support task prevents export of /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773599.372504] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.403050] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.412735] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GMI&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.453321] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;ZTE INCORPORATED&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.462991] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GMM&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.500587] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;MF668A&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.512008] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GMR&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.552866] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;BD_MF668AV1.0.1B02&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.562598] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGMI&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.624654] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;ZTE INCORPORATED&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.634427] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGMM&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.680866] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;MF668A&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.690659] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGMR&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.736816] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;BD_MF668AV1.0.1B02&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.747996] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATI&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.780616] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Manufacturer: ZTE INCORPORATED&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Model: MF668A&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Revision: BD_MF668AV1.0.1B02&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;IMEI: 864851005185039&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+GCAP: +CGSM,+FCLASS,+DS&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.790477] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATI1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.824035] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Manufacturer: ZTE INCORPORATED&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Model: MF668A&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Revision: BD_MF668AV1.0.1B02&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;IMEI: 864851005185039&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+GCAP: +CGSM,+FCLASS,+DS&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.836354] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GSN&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.880500] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;864851005185039&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.890745] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGSN&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.936900] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;864851005185039&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773599.947381] [mm-modem-helpers.c:920] mm_create_device_identifier(): Device ID source '000019d200000117Manufacturer:ZTEINCORPORATEDModel:MF668ARevision:BD_MF668AV1.0.1B02IMEI:864851005185039+GCAP:+CGSM,+FCLASS,+DS864851005185039BD_MF668AV1.0.1B02MF668AZTEINCORPORATED'
&amp;lt;debug&amp;gt; [1337773599.958097] [mm-modem-helpers.c:921] mm_create_device_identifier(): Device ID 'b735f6159cf589e85f8a66cfff7b0bd4eea1a73a'
&amp;lt;debug&amp;gt; [1337773599.969401] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 2 (close)
&amp;lt;debug&amp;gt; [1337773599.978578] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773600.007298] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773600.020371] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 1 (close)
&amp;lt;debug&amp;gt; [1337773600.030317] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CMEE=1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773600.082820] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773600.092876] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CPIN?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773600.143625] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CPIN: READY&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773600.167074] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 2 (open)
&amp;lt;debug&amp;gt; [1337773600.176319] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 1 (close)
&amp;lt;debug&amp;gt; [1337773600.186083] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CRSM=176,12258,0,0,10&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773600.650810] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CRSM: 144,0,"986302003053001571F2"&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773600.660999] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773600.671973] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB2) closing serial port...
&amp;lt;info&amp;gt;  [1337773600.684097] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB2) serial port closed
&amp;lt;debug&amp;gt; [1337773600.695333] [mm-generic-gsm.c:507] get_iccid_done(): SIM ID source '8936200003350051172'
&amp;lt;debug&amp;gt; [1337773600.706589] [mm-generic-gsm.c:508] get_iccid_done(): SIM ID '77ac780d92e5c18295a5d48747eaa490ab1b8473'
&amp;lt;debug&amp;gt; [1337773600.716169] [mm-manager.c:243] check_export_modem(): (tty/ttyUSB0): outstanding support task prevents export of /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773601.149906] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773605.150303] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773609.150739] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773613.151180] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773619.151842] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773623.152422] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773627.152855] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773631.149165] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB0) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773631.166177] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB0) closing serial port...
&amp;lt;info&amp;gt;  [1337773631.193439] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB0) serial port closed
&amp;lt;info&amp;gt;  [1337773631.207643] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB0) opening serial port...
&amp;lt;debug&amp;gt; [1337773631.219427] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB0) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773631.231061] [mm-qcdm-serial-port.c:196] debug_log(): (ttyUSB0): --&amp;gt; 00 78 f0 7e
&amp;lt;debug&amp;gt; [1337773634.149487] [mm-qcdm-serial-port.c:196] debug_log(): (ttyUSB0): --&amp;gt; 00 78 f0 7e
&amp;lt;debug&amp;gt; [1337773634.174466] [mm-qcdm-serial-port.c:196] debug_log(): (ttyUSB0): &amp;lt;-- 00 4d 61 72 20 32 39 20 32 30 31 31 31 39 3a 31 39 3a 30 35 4d 61 72 20 32 39 20 32 30 31 31 31 39 3a 31 39 3a 30 35 4d 46 36 36 38 41 4d 31 00 00 08 00 00 00 04 e0 87 b4 7e
&amp;lt;debug&amp;gt; [1337773634.186671] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB0) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773634.196594] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB0) closing serial port...
&amp;lt;info&amp;gt;  [1337773634.207091] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB0) serial port closed
&amp;lt;debug&amp;gt; [1337773634.222657] [mm-modem-base.c:155] mm_modem_base_add_port(): (ttyUSB0) type QCDM claimed by /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;info&amp;gt;  [1337773634.235710] [mm-manager.c:564] do_grab_port(): (ZTE): GSM modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3 claimed port ttyUSB0
&amp;lt;debug&amp;gt; [1337773634.247888] [mm-manager.c:265] check_export_modem(): Exported modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3 as /org/freedesktop/ModemManager/Modems/0
&amp;lt;debug&amp;gt; [1337773634.257646] [mm-manager.c:278] check_export_modem(): (/org/freedesktop/ModemManager/Modems/0): VID 0x19D2 PID 0x0117 (usb)
&amp;lt;debug&amp;gt; [1337773634.268799] [mm-manager.c:279] check_export_modem(): (/org/freedesktop/ModemManager/Modems/0): data port is ttyUSB2
&amp;lt;info&amp;gt;  [1337773640.775896] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB2) opening serial port...
&amp;lt;debug&amp;gt; [1337773641.893327] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 1 (open)
&amp;lt;info&amp;gt;  [1337773641.904280] [mm-modem.c:746] mm_modem_set_state(): Modem /org/freedesktop/ModemManager/Modems/0: state changed (disabled -&amp;gt; enabling)
&amp;lt;debug&amp;gt; [1337773642.018993] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0 V1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.064612] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.075454] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT%IPSYS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.128495] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;ERROR&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.138131] [mm-serial-parsers.c:438] mm_serial_parser_v1_parse(): Got failure code 100: Unknown error
&amp;lt;debug&amp;gt; [1337773642.149391] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATZ E0 V1 X4 &amp;amp;C1 +CMEE=1;+CFUN=1;&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.298726] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.309200] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.349565] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.359537] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.406263] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CPMS: "ME",2,100,"ME",2,100,"ME",2,100&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;info&amp;gt;  [1337773642.418515] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB1) opening serial port...
&amp;lt;debug&amp;gt; [1337773642.430046] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB1) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773642.439858] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+IFC=1,1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.500501] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.511341] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CPMS="ME","ME","ME"&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.623317] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CPMS: 2,100,2,100,2,100&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.633237] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CNMI=2,1,2,1,0&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.728853] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CMS ERROR: 303&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.742446] [mm-serial-parsers.c:438] mm_serial_parser_v1_parse(): Got failure code 303: Operation not supported
&amp;lt;debug&amp;gt; [1337773642.754604] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CMGF=?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.809617] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CMGF: (0-1)&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.821043] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CUSD=1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.872574] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.886235] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CIND=?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.938037] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CIND: ("battchg",(0-5)),("signal",(0-5)),("service",(0-1)),("call",(0-1)),("roam",(0-1)),("smsfull",(0-1)),("GPRS coverage",(0-1)),("callsetup",(0-3))&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773642.951405] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+ZSNT?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773643.006098] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+ZSNT: 0,0,1&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773643.018522] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CSCS=?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773643.076816] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CSCS: ("IRA","GSM","UCS2")&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773643.088298] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CMGF=1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773643.144533] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;info&amp;gt;  [1337773643.158158] [mm-generic-gsm.c:1704] sms_set_format_cb(): (ttyUSB2): using text mode for SMS
&amp;lt;debug&amp;gt; [1337773643.171007] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CMER=3,0,0,1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773643.249741] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773643.261751] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'AT+CMER=3,0,0,1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773643.273726] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CSCS="UCS2"&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773643.348958] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773643.360981] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773643.380451] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CSCS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773643.436546] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CSCS: "UCS2"&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;info&amp;gt;  [1337773643.451985] [mm-modem.c:746] mm_modem_set_state(): Modem /org/freedesktop/ModemManager/Modems/0: state changed (enabling -&amp;gt; enabled)
&amp;lt;debug&amp;gt; [1337773643.465814] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CREG=2&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773643.924751] [mm-generic-gsm.c:5924] simple_connect(): (ttyUSB2): number =&amp;gt; "*99#"
&amp;lt;debug&amp;gt; [1337773643.947388] [mm-generic-gsm.c:5924] simple_connect(): (ttyUSB2): network_mode =&amp;gt; 5
&amp;lt;debug&amp;gt; [1337773643.960909] [mm-generic-gsm.c:5924] simple_connect(): (ttyUSB2): apn =&amp;gt; "net"
&amp;lt;debug&amp;gt; [1337773643.970788] [mm-generic-gsm.c:5924] simple_connect(): (ttyUSB2): allowed_mode =&amp;gt; 1
&amp;lt;debug&amp;gt; [1337773643.983852] [mm-generic-gsm.c:5924] simple_connect(): (ttyUSB2): allowed_auth =&amp;gt; 63
&amp;lt;debug&amp;gt; [1337773644.006507] [mm-generic-gsm.c:5813] simple_state_machine(): (ttyUSB2): simple connect state 0
&amp;lt;debug&amp;gt; [1337773644.021398] [mm-generic-gsm.c:5813] simple_state_machine(): (ttyUSB2): simple connect state 2
&amp;lt;debug&amp;gt; [1337773644.065958] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.084960] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CIND?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.134694] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CIND: 5,3,1,0,0,0,1,0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.154797] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CIND?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.210641] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CIND: 5,3,1,0,0,0,1,0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.223500] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+ZSNT=0,0,1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.306884] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.319073] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CREG?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.335930] [mm-generic-gsm.c:5813] simple_state_machine(): (ttyUSB2): simple connect state 3
&amp;lt;debug&amp;gt; [1337773644.389780] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CREG: 2,1, C8B, EECB&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.399847] [mm-generic-gsm.c:3007] mm_generic_gsm_set_reg_status(): CS registration state changed: 1
&amp;lt;info&amp;gt;  [1337773644.413618] [mm-modem.c:746] mm_modem_set_state(): Modem /org/freedesktop/ModemManager/Modems/0: state changed (enabled -&amp;gt; registered)
&amp;lt;debug&amp;gt; [1337773644.425540] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGREG=2&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.485696] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.495980] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'AT+CREG=2&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.507835] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+COPS=0,,&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.553050] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.563955] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'AT+CGREG=2&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.597734] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.613773] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+COPS=3,2;+COPS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.656319] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.729313] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+COPS: 0,2,"21601",0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.740398] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+COPS=3,0;+COPS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.834071] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+COPS: 0,0,"Telenor HU",0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.847527] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CIND?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.897602] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CIND: 5,3,1,0,0,0,1,0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.908190] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+ZPAS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.970196] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+ZPAS: "EDGE","CS_PS"&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773644.984187] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGREG?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773645.037903] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CGREG: 2,1, C8B, EECB&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773645.047776] [mm-generic-gsm.c:3007] mm_generic_gsm_set_reg_status(): PS registration state changed: 1
&amp;lt;debug&amp;gt; [1337773645.061169] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CREG?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773645.109630] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CREG: 2,1, C8B, EECB&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773645.121987] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGREG?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773645.177338] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CGREG: 2,1, C8B, EECB&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773645.525779] [mm-generic-gsm.c:5813] simple_state_machine(): (ttyUSB2): simple connect state 4
&amp;lt;debug&amp;gt; [1337773645.535415] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+COPS=3,2;+COPS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773645.634652] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+COPS: 0,2,"21601",0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773645.644466] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+COPS=3,0;+COPS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773645.749760] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+COPS: 0,0,"Telenor HU",0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773645.761981] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CIND?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773645.815709] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CIND: 5,3,1,0,0,0,1,0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773645.826487] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+ZPAS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773645.874498] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+ZPAS: "EDGE","CS_PS"&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773645.884869] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGDCONT?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773645.953761] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CGDCONT: 1,"IP","net","",0,0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773645.965800] [mm-generic-gsm.c:5813] simple_state_machine(): (ttyUSB2): simple connect state 5
&amp;lt;info&amp;gt;  [1337773645.975889] [mm-modem.c:746] mm_modem_set_state(): Modem /org/freedesktop/ModemManager/Modems/0: state changed (registered -&amp;gt; connecting)
&amp;lt;debug&amp;gt; [1337773645.985954] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATD*99***1#&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773646.054839] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;CONNECT 28000000&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773646.065198] [mm-port.c:181] mm_port_set_connected(): (ttyUSB2): port now connected
&amp;lt;info&amp;gt;  [1337773646.076728] [mm-modem.c:746] mm_modem_set_state(): Modem /org/freedesktop/ModemManager/Modems/0: state changed (connecting -&amp;gt; connected)
&amp;lt;debug&amp;gt; [1337773646.086689] [mm-generic-gsm.c:5813] simple_state_machine(): (ttyUSB2): simple connect state 6
&amp;lt;debug&amp;gt; [1337773646.479041] [mm-manager.c:793] device_added(): (net/ppp0): could not get port's parent device
&amp;lt;debug&amp;gt; [1337773650.893267] [mm-serial-port.c:636] data_available(): (ttyUSB1) unexpected port hangup!
&amp;lt;debug&amp;gt; [1337773653.216816] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB1) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773654.067517] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB1) closing serial port...
&amp;lt;info&amp;gt;  [1337773654.079909] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB1) serial port closed
&amp;lt;info&amp;gt;  [1337773654.104295] [mm-manager.c:862] device_removed(): (tty/ttyUSB0): released by modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773654.118549] [mm-modem-base.c:185] mm_modem_base_remove_port(): (ttyUSB0) type QCDM removed from /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773654.128234] [mm-serial-port.c:636] data_available(): (ttyUSB2) unexpected port hangup!
&amp;lt;debug&amp;gt; [1337773654.138995] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773654.150100] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB2) closing serial port...
&amp;lt;debug&amp;gt; [1337773654.159361] [mm-port.c:181] mm_port_set_connected(): (ttyUSB2): port now disconnected
&amp;lt;info&amp;gt;  [1337773654.169036] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB2) serial port closed
&amp;lt;info&amp;gt;  [1337773654.183997] [mm-modem.c:746] mm_modem_set_state(): Modem /org/freedesktop/ModemManager/Modems/0: state changed (connected -&amp;gt; disconnecting)
&amp;lt;info&amp;gt;  [1337773654.208324] [mm-manager.c:862] device_removed(): (tty/ttyUSB1): released by modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773654.219633] [mm-modem-base.c:185] mm_modem_base_remove_port(): (ttyUSB1) type secondary removed from /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;info&amp;gt;  [1337773654.256186] [mm-manager.c:862] device_removed(): (tty/ttyUSB2): released by modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773654.274332] [mm-modem-base.c:185] mm_modem_base_remove_port(): (ttyUSB2) type primary removed from /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;info&amp;gt;  [1337773654.286176] [mm-modem.c:746] mm_modem_set_state(): Modem /org/freedesktop/ModemManager/Modems/0: state changed (disconnecting -&amp;gt; disabled)
&amp;lt;debug&amp;gt; [1337773654.297247] [mm-manager.c:204] remove_modem(): Removed modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;info&amp;gt;  [1337773667.463966] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB1) opening serial port...
&amp;lt;debug&amp;gt; [1337773669.028285] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB1) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773670.261752] [mm-plugin-base.c:859] try_open(): (ttyUSB1): probe requested by plugin 'ZTE'
&amp;lt;info&amp;gt;  [1337773670.317398] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB0) opening serial port...
&amp;lt;debug&amp;gt; [1337773670.329979] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB0) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773670.341162] [mm-plugin-base.c:859] try_open(): (ttyUSB0): probe requested by plugin 'ZTE'
&amp;lt;info&amp;gt;  [1337773670.351037] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB2) opening serial port...
&amp;lt;debug&amp;gt; [1337773670.362583] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773670.374496] [mm-plugin-base.c:859] try_open(): (ttyUSB2): probe requested by plugin 'ZTE'
&amp;lt;debug&amp;gt; [1337773670.389172] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773670.454213] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773670.494130] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773671.444968] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CPMS: "ME",2,100,"ME",2,100,"ME",2,100&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773671.456287] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773671.551633] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CPMS: "ME",2,100,"ME",2,100,"ME",2,100&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773671.561557] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773672.199424] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+GCAP: +CGSM,+FCLASS,+DS&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773672.551770] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB1) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773672.562857] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB1) closing serial port...
&amp;lt;info&amp;gt;  [1337773672.574634] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB1) serial port closed
&amp;lt;debug&amp;gt; [1337773672.679071] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+GCAP: +CGSM,+FCLASS,+DS&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773672.709444] [mm-modem-base.c:155] mm_modem_base_add_port(): (ttyUSB1) type secondary claimed by /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;info&amp;gt;  [1337773672.721678] [mm-manager.c:564] do_grab_port(): (ZTE): GSM modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3 claimed port ttyUSB1
&amp;lt;debug&amp;gt; [1337773672.732568] [mm-manager.c:317] add_modem(): Added modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773672.754694] [mm-manager.c:243] check_export_modem(): (tty/ttyUSB0): outstanding support task prevents export of /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773672.765688] [mm-manager.c:243] check_export_modem(): (tty/ttyUSB0): outstanding support task prevents export of /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773672.777843] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773672.787169] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB2) closing serial port...
&amp;lt;info&amp;gt;  [1337773672.797758] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB2) serial port closed
&amp;lt;debug&amp;gt; [1337773672.812639] [mm-modem-base.c:155] mm_modem_base_add_port(): (ttyUSB2) type primary claimed by /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;info&amp;gt;  [1337773672.823862] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB2) opening serial port...
&amp;lt;debug&amp;gt; [1337773672.836354] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773672.846072] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 2 (open)
&amp;lt;debug&amp;gt; [1337773672.857598] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 3 (open)
&amp;lt;info&amp;gt;  [1337773672.871669] [mm-manager.c:564] do_grab_port(): (ZTE): GSM modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3 claimed port ttyUSB2
&amp;lt;debug&amp;gt; [1337773672.887742] [mm-manager.c:243] check_export_modem(): (tty/ttyUSB0): outstanding support task prevents export of /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773672.898709] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773672.927146] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773672.937228] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GMI&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773672.981753] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;ZTE INCORPORATED&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773672.991886] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GMM&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.032560] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;MF668A&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.042482] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GMR&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.084650] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;BD_MF668AV1.0.1B02&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.096636] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGMI&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.144872] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;ZTE INCORPORATED&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.155072] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGMM&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.204789] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;MF668A&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.214923] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGMR&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.260765] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;BD_MF668AV1.0.1B02&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.270667] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATI&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.304734] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Manufacturer: ZTE INCORPORATED&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Model: MF668A&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Revision: BD_MF668AV1.0.1B02&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;IMEI: 864851005185039&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+GCAP: +CGSM,+FCLASS,+DS&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.316377] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATI1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.348592] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Manufacturer: ZTE INCORPORATED&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Model: MF668A&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Revision: BD_MF668AV1.0.1B02&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;IMEI: 864851005185039&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+GCAP: +CGSM,+FCLASS,+DS&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.358822] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GSN&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.412812] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;864851005185039&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.423111] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGSN&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.472823] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;864851005185039&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.483080] [mm-modem-helpers.c:920] mm_create_device_identifier(): Device ID source '000019d200000117Manufacturer:ZTEINCORPORATEDModel:MF668ARevision:BD_MF668AV1.0.1B02IMEI:864851005185039+GCAP:+CGSM,+FCLASS,+DS864851005185039BD_MF668AV1.0.1B02MF668AZTEINCORPORATED'
&amp;lt;debug&amp;gt; [1337773673.495136] [mm-modem-helpers.c:921] mm_create_device_identifier(): Device ID 'b735f6159cf589e85f8a66cfff7b0bd4eea1a73a'
&amp;lt;debug&amp;gt; [1337773673.506233] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 2 (close)
&amp;lt;debug&amp;gt; [1337773673.516794] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.543608] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.558683] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 1 (close)
&amp;lt;debug&amp;gt; [1337773673.568071] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CMEE=1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.622935] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.634154] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CPIN?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.687646] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CPIN: READY&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773673.697520] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 2 (open)
&amp;lt;debug&amp;gt; [1337773673.707460] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 1 (close)
&amp;lt;debug&amp;gt; [1337773673.721857] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CRSM=176,12258,0,0,10&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773674.187583] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CRSM: 144,0,"986302003053001571F2"&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773674.198803] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773674.208568] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB2) closing serial port...
&amp;lt;info&amp;gt;  [1337773674.220572] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB2) serial port closed
&amp;lt;debug&amp;gt; [1337773674.232050] [mm-generic-gsm.c:507] get_iccid_done(): SIM ID source '8936200003350051172'
&amp;lt;debug&amp;gt; [1337773674.241328] [mm-generic-gsm.c:508] get_iccid_done(): SIM ID '77ac780d92e5c18295a5d48747eaa490ab1b8473'
&amp;lt;debug&amp;gt; [1337773674.251387] [mm-manager.c:243] check_export_modem(): (tty/ttyUSB0): outstanding support task prevents export of /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
&amp;lt;debug&amp;gt; [1337773675.150065] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773679.150457] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773683.150935] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;info&amp;gt;  [1337773688.560038] [main.c:41] mm_signal_handler(): Caught signal 2, shutting down...
&amp;lt;debug&amp;gt; [1337773688.915612] [mm-manager.c:204] remove_modem(): Removed modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.3
marshal_object: assertion `g_variant_is_object_path (path)' failedfailed to marshal parameter 1 for signal DeviceRemoved&amp;lt;debug&amp;gt; [1337773688.931450] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB0) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773688.943001] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB0) closing serial port...
&amp;lt;info&amp;gt;  [1337773688.957462] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB0) serial port closed
&amp;lt;info&amp;gt;  [1337773740.722483] [main.c:167] main(): ModemManager (version 0.5.2.0) starting...
&amp;lt;info&amp;gt;  [1337773741.567195] [mm-manager.c:120] load_plugin(): Loaded plugin ZTE
&amp;lt;info&amp;gt;  [1337773741.600272] [mm-manager.c:120] load_plugin(): Loaded plugin Gobi
&amp;lt;info&amp;gt;  [1337773741.614259] [mm-manager.c:120] load_plugin(): Loaded plugin X22X
&amp;lt;info&amp;gt;  [1337773741.626365] [mm-manager.c:120] load_plugin(): Loaded plugin Novatel
&amp;lt;info&amp;gt;  [1337773741.639401] [mm-manager.c:120] load_plugin(): Loaded plugin Sierra
&amp;lt;info&amp;gt;  [1337773741.650522] [mm-manager.c:120] load_plugin(): Loaded plugin Option
&amp;lt;info&amp;gt;  [1337773741.663114] [mm-manager.c:120] load_plugin(): Loaded plugin Huawei
&amp;lt;info&amp;gt;  [1337773741.676437] [mm-manager.c:120] load_plugin(): Loaded plugin MotoC
&amp;lt;info&amp;gt;  [1337773741.688010] [mm-manager.c:120] load_plugin(): Loaded plugin AnyData
&amp;lt;info&amp;gt;  [1337773741.698891] [mm-manager.c:120] load_plugin(): Loaded plugin Linktop
&amp;lt;info&amp;gt;  [1337773741.713284] [mm-manager.c:120] load_plugin(): Loaded plugin Option High-Speed
&amp;lt;info&amp;gt;  [1337773741.725311] [mm-manager.c:120] load_plugin(): Loaded plugin Generic
&amp;lt;info&amp;gt;  [1337773741.738436] [mm-manager.c:120] load_plugin(): Loaded plugin Nokia
&amp;lt;info&amp;gt;  [1337773741.749382] [mm-manager.c:120] load_plugin(): Loaded plugin Ericsson MBM
&amp;lt;info&amp;gt;  [1337773741.762308] [mm-manager.c:120] load_plugin(): Loaded plugin Longcheer
&amp;lt;info&amp;gt;  [1337773742.109172] [mm-manager.c:120] load_plugin(): Loaded plugin Samsung
&amp;lt;info&amp;gt;  [1337773742.119382] [mm-manager.c:120] load_plugin(): Loaded plugin Wavecom
&amp;lt;info&amp;gt;  [1337773742.130616] [mm-manager.c:120] load_plugin(): Loaded plugin SimTech
&amp;lt;debug&amp;gt; [1337773742.159294] [mm-manager.c:809] device_added(): (tty/ttyS0): port's parent platform driver is not whitelisted
&amp;lt;debug&amp;gt; [1337773742.171122] [mm-manager.c:809] device_added(): (tty/ttyS1): port's parent platform driver is not whitelisted
&amp;lt;debug&amp;gt; [1337773742.198060] [mm-manager.c:809] device_added(): (tty/ttyS2): port's parent platform driver is not whitelisted
&amp;lt;debug&amp;gt; [1337773742.208555] [mm-manager.c:809] device_added(): (tty/ttyS3): port's parent platform driver is not whitelisted
&amp;lt;info&amp;gt;  [1337773760.830035] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB1) opening serial port...
&amp;lt;debug&amp;gt; [1337773763.433703] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB1) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773764.182846] [mm-plugin-base.c:859] try_open(): (ttyUSB1): probe requested by plugin 'ZTE'
&amp;lt;info&amp;gt;  [1337773764.223361] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB0) opening serial port...
&amp;lt;debug&amp;gt; [1337773764.234273] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB0) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773764.245996] [mm-plugin-base.c:859] try_open(): (ttyUSB0): probe requested by plugin 'ZTE'
&amp;lt;info&amp;gt;  [1337773764.255534] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB2) opening serial port...
&amp;lt;debug&amp;gt; [1337773764.269223] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773764.278576] [mm-plugin-base.c:859] try_open(): (ttyUSB2): probe requested by plugin 'ZTE'
&amp;lt;debug&amp;gt; [1337773764.307023] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773765.331240] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- 'ATE0+CPMS?'
&amp;lt;debug&amp;gt; [1337773765.355832] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CME ERROR: SIM busy&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773765.365174] [mm-serial-parsers.c:438] mm_serial_parser_v1_parse(): Got failure code 14: SIM busy
&amp;lt;debug&amp;gt; [1337773765.382092] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773765.391752] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773765.402087] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773766.444618] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CME ERROR: SIM busy&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773766.455202] [mm-serial-parsers.c:438] mm_serial_parser_v1_parse(): Got failure code 14: SIM busy
&amp;lt;debug&amp;gt; [1337773766.466507] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773766.477723] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CME ERROR: SIM busy&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773766.490829] [mm-serial-parsers.c:438] mm_serial_parser_v1_parse(): Got failure code 14: SIM busy
&amp;lt;debug&amp;gt; [1337773766.499963] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773767.532861] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CME ERROR: SIM busy&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773767.545112] [mm-serial-parsers.c:438] mm_serial_parser_v1_parse(): Got failure code 14: SIM busy
&amp;lt;debug&amp;gt; [1337773767.556394] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773767.568797] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CME ERROR: SIM busy&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773767.580160] [mm-serial-parsers.c:438] mm_serial_parser_v1_parse(): Got failure code 14: SIM busy
&amp;lt;debug&amp;gt; [1337773767.591056] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773768.635719] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CME ERROR: SIM busy&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773768.645846] [mm-serial-parsers.c:438] mm_serial_parser_v1_parse(): Got failure code 14: SIM busy
&amp;lt;debug&amp;gt; [1337773768.660451] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773768.674465] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CME ERROR: SIM busy&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773768.685808] [mm-serial-parsers.c:438] mm_serial_parser_v1_parse(): Got failure code 14: SIM busy
&amp;lt;debug&amp;gt; [1337773768.696820] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773769.749972] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CME ERROR: SIM busy&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773769.760771] [mm-serial-parsers.c:438] mm_serial_parser_v1_parse(): Got failure code 14: SIM busy
&amp;lt;debug&amp;gt; [1337773769.773648] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773769.784718] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CME ERROR: SIM busy&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773769.795804] [mm-serial-parsers.c:438] mm_serial_parser_v1_parse(): Got failure code 14: SIM busy
&amp;lt;debug&amp;gt; [1337773769.808341] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773770.152595] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773770.573954] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+GCAP: +CGSM,+FCLASS,+DS&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773770.585832] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB1) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773770.615358] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB1) closing serial port...
&amp;lt;info&amp;gt;  [1337773770.629053] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB1) serial port closed
&amp;lt;debug&amp;gt; [1337773770.825537] [mm-modem-base.c:155] mm_modem_base_add_port(): (ttyUSB1) type secondary claimed by /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.1
&amp;lt;info&amp;gt;  [1337773770.841152] [mm-manager.c:564] do_grab_port(): (ZTE): GSM modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.1 claimed port ttyUSB1
&amp;lt;debug&amp;gt; [1337773770.853255] [mm-manager.c:317] add_modem(): Added modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.1
&amp;lt;debug&amp;gt; [1337773770.864330] [mm-manager.c:243] check_export_modem(): (tty/ttyUSB0): outstanding support task prevents export of /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.1
&amp;lt;debug&amp;gt; [1337773770.875094] [mm-manager.c:243] check_export_modem(): (tty/ttyUSB0): outstanding support task prevents export of /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.1
&amp;lt;debug&amp;gt; [1337773770.999806] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CME ERROR: SIM busy&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773771.010424] [mm-serial-parsers.c:438] mm_serial_parser_v1_parse(): Got failure code 14: SIM busy
&amp;lt;debug&amp;gt; [1337773771.023118] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773771.790514] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+GCAP: +CGSM,+FCLASS,+DS&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773771.805913] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773771.814753] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB2) closing serial port...
&amp;lt;info&amp;gt;  [1337773771.825106] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB2) serial port closed
&amp;lt;debug&amp;gt; [1337773771.839761] [mm-modem-base.c:155] mm_modem_base_add_port(): (ttyUSB2) type primary claimed by /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.1
&amp;lt;info&amp;gt;  [1337773771.850771] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB2) opening serial port...
&amp;lt;debug&amp;gt; [1337773771.863197] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773771.872658] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 2 (open)
&amp;lt;debug&amp;gt; [1337773771.883186] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 3 (open)
&amp;lt;info&amp;gt;  [1337773771.894632] [mm-manager.c:564] do_grab_port(): (ZTE): GSM modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.1 claimed port ttyUSB2
&amp;lt;debug&amp;gt; [1337773771.903731] [mm-manager.c:243] check_export_modem(): (tty/ttyUSB0): outstanding support task prevents export of /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.1
&amp;lt;debug&amp;gt; [1337773771.913228] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773771.957979] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773771.967925] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GMI&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.029631] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;ZTE INCORPORATED&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.039450] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GMM&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.100669] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;MF668A&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.127464] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GMR&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.188535] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;BD_MF668AV1.0.1B02&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.201152] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGMI&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.275024] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;ZTE INCORPORATED&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.286764] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGMM&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.358939] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;MF668A&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.714193] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGMR&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.791213] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;BD_MF668AV1.0.1B02&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.800963] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATI&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.850487] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Manufacturer: ZTE INCORPORATED&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Model: MF668A&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Revision: BD_MF668AV1.0.1B02&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;IMEI: 864851005185039&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+GCAP: +CGSM,+FCLASS,+DS&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.862005] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATI1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.915259] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Manufacturer: ZTE INCORPORATED&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Model: MF668A&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;Revision: BD_MF668AV1.0.1B02&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;IMEI: 864851005185039&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+GCAP: +CGSM,+FCLASS,+DS&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.925031] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+GSN&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773772.994947] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;864851005185039&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773773.004856] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGSN&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773773.046885] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;864851005185039&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773773.058318] [mm-modem-helpers.c:920] mm_create_device_identifier(): Device ID source '000019d200000117Manufacturer:ZTEINCORPORATEDModel:MF668ARevision:BD_MF668AV1.0.1B02IMEI:864851005185039+GCAP:+CGSM,+FCLASS,+DS864851005185039BD_MF668AV1.0.1B02MF668AZTEINCORPORATED'
&amp;lt;debug&amp;gt; [1337773773.069335] [mm-modem-helpers.c:921] mm_create_device_identifier(): Device ID 'b735f6159cf589e85f8a66cfff7b0bd4eea1a73a'
&amp;lt;debug&amp;gt; [1337773773.079140] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 2 (close)
&amp;lt;debug&amp;gt; [1337773773.090037] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773773.128904] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773773.139060] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 1 (close)
&amp;lt;debug&amp;gt; [1337773773.148953] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CMEE=1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773773.213968] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773773.224271] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CPIN?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773773.270919] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CPIN: READY&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773773.281351] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 2 (open)
&amp;lt;debug&amp;gt; [1337773773.292467] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 1 (close)
&amp;lt;debug&amp;gt; [1337773773.303734] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CRSM=176,12258,0,0,10&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773774.088394] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CRSM: 144,0,"986302003053001571F2"&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773774.098617] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773774.110909] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB2) closing serial port...
&amp;lt;info&amp;gt;  [1337773774.121719] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB2) serial port closed
&amp;lt;debug&amp;gt; [1337773774.132658] [mm-generic-gsm.c:507] get_iccid_done(): SIM ID source '8936200003350051172'
&amp;lt;debug&amp;gt; [1337773774.142257] [mm-generic-gsm.c:508] get_iccid_done(): SIM ID '77ac780d92e5c18295a5d48747eaa490ab1b8473'
&amp;lt;debug&amp;gt; [1337773774.153359] [mm-manager.c:243] check_export_modem(): (tty/ttyUSB0): outstanding support task prevents export of /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.1
&amp;lt;debug&amp;gt; [1337773774.164910] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773778.149335] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773782.149763] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'ATE0+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773786.150409] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773790.154937] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773794.151272] [mm-at-serial-port.c:333] debug_log(): (ttyUSB0): --&amp;gt; 'AT+GCAP&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773798.155497] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB0) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773800.483823] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB0) closing serial port...
&amp;lt;info&amp;gt;  [1337773800.494859] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB0) serial port closed
&amp;lt;info&amp;gt;  [1337773800.508274] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB0) opening serial port...
&amp;lt;debug&amp;gt; [1337773800.520460] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB0) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773800.532397] [mm-qcdm-serial-port.c:196] debug_log(): (ttyUSB0): --&amp;gt; 00 78 f0 7e
&amp;lt;debug&amp;gt; [1337773804.152168] [mm-qcdm-serial-port.c:196] debug_log(): (ttyUSB0): --&amp;gt; 00 78 f0 7e
&amp;lt;debug&amp;gt; [1337773804.189290] [mm-qcdm-serial-port.c:196] debug_log(): (ttyUSB0): &amp;lt;-- 00 4d 61 72 20 32 39 20 32 30 31 31 31 39 3a 31 39 3a 30 35 4d 61 72 20 32 39 20 32 30 31 31 31 39 3a 31 39 3a 30 35 4d 46 36 36 38 41 4d 31 00 00 08 00 00 00 04 e0 87 b4 7e
&amp;lt;debug&amp;gt; [1337773804.202868] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB0) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773804.214092] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB0) closing serial port...
&amp;lt;info&amp;gt;  [1337773804.227197] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB0) serial port closed
&amp;lt;debug&amp;gt; [1337773804.240058] [mm-modem-base.c:155] mm_modem_base_add_port(): (ttyUSB0) type QCDM claimed by /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.1
&amp;lt;info&amp;gt;  [1337773804.250107] [mm-manager.c:564] do_grab_port(): (ZTE): GSM modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.1 claimed port ttyUSB0
&amp;lt;debug&amp;gt; [1337773804.263585] [mm-manager.c:265] check_export_modem(): Exported modem /sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.1 as /org/freedesktop/ModemManager/Modems/0
&amp;lt;debug&amp;gt; [1337773804.274296] [mm-manager.c:278] check_export_modem(): (/org/freedesktop/ModemManager/Modems/0): VID 0x19D2 PID 0x0117 (usb)
&amp;lt;debug&amp;gt; [1337773804.285736] [mm-manager.c:279] check_export_modem(): (/org/freedesktop/ModemManager/Modems/0): data port is ttyUSB2
&amp;lt;info&amp;gt;  [1337773826.328551] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB2) opening serial port...
&amp;lt;debug&amp;gt; [1337773826.770304] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB2) device open count is 1 (open)
&amp;lt;info&amp;gt;  [1337773826.780664] [mm-modem.c:746] mm_modem_set_state(): Modem /org/freedesktop/ModemManager/Modems/0: state changed (disabled -&amp;gt; enabling)
&amp;lt;debug&amp;gt; [1337773826.899405] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0 V1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773827.286186] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773827.298487] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT%IPSYS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773827.357020] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;ERROR&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773827.368587] [mm-serial-parsers.c:438] mm_serial_parser_v1_parse(): Got failure code 100: Unknown error
&amp;lt;debug&amp;gt; [1337773827.381065] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATZ E0 V1 X4 &amp;amp;C1 +CMEE=1;+CFUN=1;&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773827.534447] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773827.544253] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATE0&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773827.580999] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773827.591689] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CPMS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773827.642439] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CPMS: "SM",0,25,"SM",0,25,"ME",2,100&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;info&amp;gt;  [1337773827.990244] [mm-serial-port.c:741] mm_serial_port_open(): (ttyUSB1) opening serial port...
&amp;lt;debug&amp;gt; [1337773828.002619] [mm-serial-port.c:810] mm_serial_port_open(): (ttyUSB1) device open count is 1 (open)
&amp;lt;debug&amp;gt; [1337773828.012494] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+IFC=1,1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.069799] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.079569] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CPMS="ME","ME","ME"&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.183793] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CPMS: 2,100,2,100,2,100&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.195138] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CNMI=2,1,2,1,0&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.288110] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CMS ERROR: 303&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.297770] [mm-serial-parsers.c:438] mm_serial_parser_v1_parse(): Got failure code 303: Operation not supported
&amp;lt;debug&amp;gt; [1337773828.309889] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CMGF=?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.366290] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CMGF: (0-1)&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.377421] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CUSD=1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.425086] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.438875] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CIND=?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.497953] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CIND: ("battchg",(0-5)),("signal",(0-5)),("service",(0-1)),("call",(0-1)),("roam",(0-1)),("smsfull",(0-1)),("GPRS coverage",(0-1)),("callsetup",(0-3))&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.509613] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+ZSNT?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.565262] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+ZSNT: 0,0,1&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.575249] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CSCS=?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.630150] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CSCS: ("IRA","GSM","UCS2")&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.643431] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CMGF=1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.701578] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;info&amp;gt;  [1337773828.712491] [mm-generic-gsm.c:1704] sms_set_format_cb(): (ttyUSB2): using text mode for SMS
&amp;lt;debug&amp;gt; [1337773828.723711] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CMER=3,0,0,1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.801987] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.815293] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'AT+CMER=3,0,0,1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.825859] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CSCS="UCS2"&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.897538] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.910174] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.921590] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CSCS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773828.973927] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CSCS: "UCS2"&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;info&amp;gt;  [1337773828.987762] [mm-modem.c:746] mm_modem_set_state(): Modem /org/freedesktop/ModemManager/Modems/0: state changed (enabling -&amp;gt; enabled)
&amp;lt;debug&amp;gt; [1337773829.000101] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CREG=2&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773829.856750] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773829.872958] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CIND?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773829.927241] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CIND: 5,3,1,0,0,0,1,0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773829.939275] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CREG?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773829.990119] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CREG: 2,1, C8B, EECB&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.005788] [mm-generic-gsm.c:3007] mm_generic_gsm_set_reg_status(): CS registration state changed: 1
&amp;lt;info&amp;gt;  [1337773830.029726] [mm-modem.c:746] mm_modem_set_state(): Modem /org/freedesktop/ModemManager/Modems/0: state changed (enabled -&amp;gt; registered)
&amp;lt;debug&amp;gt; [1337773830.042495] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGREG=2&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.104173] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.115475] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'AT+CREG=2&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.128389] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+COPS=3,2;+COPS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.177378] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.188983] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'AT+CGREG=2&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.237593] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+COPS: 0,2,"21601",0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.253880] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+COPS=3,0;+COPS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.267971] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.352730] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+COPS: 0,0,"Telenor HU",0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.703923] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CIND?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.755228] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CIND: 5,3,1,0,0,0,1,0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.765218] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+ZPAS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.818428] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+ZPAS: "EDGE","CS_PS"&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.829661] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGREG?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.877384] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CGREG: 2,1, C8B, EECB&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.886797] [mm-generic-gsm.c:3007] mm_generic_gsm_set_reg_status(): PS registration state changed: 1
&amp;lt;debug&amp;gt; [1337773830.897721] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+COPS=3,2;+COPS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.990461] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+COPS: 0,2,"21601",0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773830.999910] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+COPS=3,0;+COPS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773831.086815] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+COPS: 0,0,"Telenor HU",0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773831.099274] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CIND?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773831.150731] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CIND: 5,3,1,0,0,0,1,0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773831.161680] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+ZPAS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773831.205420] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+ZPAS: "EDGE","CS_PS"&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773859.150311] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CIND?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773859.622368] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CIND: 5,3,1,0,0,0,1,0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773859.632516] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+ZPAS?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773859.689555] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+ZPAS: "EDGE","CS_PS"&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773877.397253] [mm-generic-gsm.c:5924] simple_connect(): (ttyUSB2): number =&amp;gt; "*99#"
&amp;lt;debug&amp;gt; [1337773878.553531] [mm-generic-gsm.c:5924] simple_connect(): (ttyUSB2): network_mode =&amp;gt; 5
&amp;lt;debug&amp;gt; [1337773878.976940] [mm-generic-gsm.c:5924] simple_connect(): (ttyUSB2): apn =&amp;gt; "net"
&amp;lt;debug&amp;gt; [1337773878.987886] [mm-generic-gsm.c:5924] simple_connect(): (ttyUSB2): allowed_mode =&amp;gt; 1
&amp;lt;debug&amp;gt; [1337773878.999553] [mm-generic-gsm.c:5924] simple_connect(): (ttyUSB2): allowed_auth =&amp;gt; 63
&amp;lt;debug&amp;gt; [1337773879.009278] [mm-generic-gsm.c:5813] simple_state_machine(): (ttyUSB2): simple connect state 0
&amp;lt;debug&amp;gt; [1337773879.018878] [mm-generic-gsm.c:5813] simple_state_machine(): (ttyUSB2): simple connect state 2
&amp;lt;debug&amp;gt; [1337773879.046133] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+ZSNT=0,0,1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773879.179540] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773879.194974] [mm-generic-gsm.c:5813] simple_state_machine(): (ttyUSB2): simple connect state 3
&amp;lt;debug&amp;gt; [1337773879.206422] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CREG?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773879.282817] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CREG: 2,1, C8B, EECB&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773879.295257] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGREG?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773879.384338] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CGREG: 2,1, C8B, EECB&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773879.394267] [mm-generic-gsm.c:5813] simple_state_machine(): (ttyUSB2): simple connect state 4
&amp;lt;debug&amp;gt; [1337773879.406999] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'AT+CGDCONT?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773879.516361] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;+CGDCONT: 1,"IP","net","",0,0&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;OK&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773879.530271] [mm-generic-gsm.c:5813] simple_state_machine(): (ttyUSB2): simple connect state 5
&amp;lt;info&amp;gt;  [1337773879.541676] [mm-modem.c:746] mm_modem_set_state(): Modem /org/freedesktop/ModemManager/Modems/0: state changed (registered -&amp;gt; connecting)
&amp;lt;debug&amp;gt; [1337773879.553719] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): --&amp;gt; 'ATD*99***1#&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773879.661322] [mm-at-serial-port.c:333] debug_log(): (ttyUSB2): &amp;lt;-- '&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;CONNECT 28000000&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;'
&amp;lt;debug&amp;gt; [1337773879.673210] [mm-port.c:181] mm_port_set_connected(): (ttyUSB2): port now connected
&amp;lt;info&amp;gt;  [1337773879.686190] [mm-modem.c:746] mm_modem_set_state(): Modem /org/freedesktop/ModemManager/Modems/0: state changed (connecting -&amp;gt; connected)
&amp;lt;debug&amp;gt; [1337773879.696665] [mm-generic-gsm.c:5813] simple_state_machine(): (ttyUSB2): simple connect state 6
&amp;lt;debug&amp;gt; [1337773880.271794] [mm-manager.c:793] device_added(): (net/ppp0): could not get port's parent device
&amp;lt;debug&amp;gt; [1337773889.157553] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'AT+CIND?&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773893.150023] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'AT+ZPAS?&amp;lt;CR&amp;gt;'
&amp;lt;info&amp;gt;  [1337773900.175391] [mm-modem.c:746] mm_modem_set_state(): Modem /org/freedesktop/ModemManager/Modems/0: state changed (connected -&amp;gt; disconnecting)
&amp;lt;debug&amp;gt; [1337773900.204706] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'AT+CGACT=0,1&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773901.690051] [mm-serial-port.c:636] data_available(): (ttyUSB2) unexpected port hangup!
&amp;lt;debug&amp;gt; [1337773902.772007] [mm-serial-port.c:844] mm_serial_port_close(): (ttyUSB2) device open count is 0 (close)
&amp;lt;info&amp;gt;  [1337773903.197704] [mm-serial-port.c:859] mm_serial_port_close(): (ttyUSB2) closing serial port...
&amp;lt;debug&amp;gt; [1337773903.208340] [mm-port.c:181] mm_port_set_connected(): (ttyUSB2): port now disconnected
&amp;lt;info&amp;gt;  [1337773903.218082] [mm-serial-port.c:880] mm_serial_port_close(): (ttyUSB2) serial port closed
&amp;lt;info&amp;gt;  [1337773903.237938] [mm-modem.c:746] mm_modem_set_state(): Modem /org/freedesktop/ModemManager/Modems/0: state changed (disconnecting -&amp;gt; connected)
&amp;lt;info&amp;gt;  [1337773940.527533] [main.c:41] mm_signal_handler(): Caught signal 2, shutting down...
&amp;lt;info&amp;gt;  [1337773940.958003] [mm-modem.c:746] mm_modem_set_state(): Modem /org/freedesktop/ModemManager/Modems/0: state changed (connected -&amp;gt; disconnecting)
&amp;lt;info&amp;gt;  [1337773940.972155] [mm-modem.c:746] mm_modem_set_state(): Modem /org/freedesktop/ModemManager/Modems/0: state changed (disconnecting -&amp;gt; connected)
disable_disconnect_done: (/sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.1): error disconnecting the modem while disabling: (5) The serial port is not open.(mm-generic-gsm.c:2144):disable: runtime check failed: (priv-&amp;gt;cid == -1)&amp;lt;debug&amp;gt; [1337773941.001498] [mm-generic-gsm.c:2181] disable(): Shutting down secondary port
&amp;lt;debug&amp;gt; [1337773941.017730] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'AT+CREG=0&amp;lt;CR&amp;gt;'
&amp;lt;debug&amp;gt; [1337773944.151406] [mm-at-serial-port.c:333] debug_log(): (ttyUSB1): --&amp;gt; 'AT+CGREG=0&amp;lt;CR&amp;gt;'
May 23 14:07:18 antiX12base kernel: [    2.851056] registered taskstats version 1
May 23 14:07:18 antiX12base kernel: [    2.851723] rtc_cmos 00:04: setting system clock to 2012-05-23 12:07:02 UTC (1337774822)
May 23 14:07:18 antiX12base kernel: [    2.852090] Initializing network drop monitor service
May 23 14:07:18 antiX12base kernel: [    2.852731] Freeing unused kernel memory: 448k freed
May 23 14:07:18 antiX12base kernel: [    2.854971] Write protecting the kernel text: 2592k
May 23 14:07:18 antiX12base kernel: [    2.855201] Write protecting the kernel read-only data: 1060k
May 23 14:07:18 antiX12base kernel: [    3.169517] r6040: RDC R6040 NAPI net driver,version 0.28 (07Oct2011)
May 23 14:07:18 antiX12base kernel: [    3.349081] r6040_eth_mii: probed
May 23 14:07:18 antiX12base kernel: [    3.349282] r6040 0000:00:08.0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:01)
May 23 14:07:18 antiX12base kernel: [    3.411699] usbcore: registered new interface driver usbfs
May 23 14:07:18 antiX12base kernel: [    3.411984] usbcore: registered new interface driver hub
May 23 14:07:18 antiX12base kernel: [    3.426382] usbcore: registered new device driver usb
May 23 14:07:18 antiX12base kernel: [    3.431700] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
May 23 14:07:18 antiX12base kernel: [    3.431945] ehci_hcd 0000:00:0a.1: EHCI Host Controller
May 23 14:07:18 antiX12base kernel: [    3.432136] ehci_hcd 0000:00:0a.1: new USB bus registered, assigned bus number 1
May 23 14:07:18 antiX12base kernel: [    3.453851] ehci_hcd 0000:00:0a.1: irq 15, io mem 0xfebdb800
May 23 14:07:18 antiX12base kernel: [    3.456745] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
May 23 14:07:18 antiX12base kernel: [    3.460992] SCSI subsystem initialized
May 23 14:07:18 antiX12base kernel: [    3.465771] Switching to clocksource tsc
May 23 14:07:18 antiX12base kernel: [    3.465901] ehci_hcd 0000:00:0a.1: USB 2.0 started, EHCI 1.00
May 23 14:07:18 antiX12base kernel: [    3.466134] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
May 23 14:07:18 antiX12base kernel: [    3.466232] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
May 23 14:07:18 antiX12base kernel: [    3.466350] usb usb1: Product: EHCI Host Controller
May 23 14:07:18 antiX12base kernel: [    3.466432] usb usb1: Manufacturer: Linux 3.2.0-2-486 ehci_hcd
May 23 14:07:18 antiX12base kernel: [    3.466519] usb usb1: SerialNumber: 0000:00:0a.1
May 23 14:07:18 antiX12base kernel: [    3.474186] hub 1-0:1.0: USB hub found
May 23 14:07:18 antiX12base kernel: [    3.474302] hub 1-0:1.0: 2 ports detected
May 23 14:07:18 antiX12base kernel: [    3.474960] ehci_hcd 0000:00:0b.1: EHCI Host Controller
May 23 14:07:18 antiX12base kernel: [    3.475096] ehci_hcd 0000:00:0b.1: new USB bus registered, assigned bus number 2
May 23 14:07:18 antiX12base kernel: [    3.499120] ehci_hcd 0000:00:0b.1: irq 10, io mem 0xfebdbc00
May 23 14:07:18 antiX12base kernel: [    3.510463] ehci_hcd 0000:00:0b.1: USB 2.0 started, EHCI 1.00
May 23 14:07:18 antiX12base kernel: [    3.510714] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
May 23 14:07:18 antiX12base kernel: [    3.510812] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
May 23 14:07:18 antiX12base kernel: [    3.510930] usb usb2: Product: EHCI Host Controller
May 23 14:07:18 antiX12base kernel: [    3.511013] usb usb2: Manufacturer: Linux 3.2.0-2-486 ehci_hcd
May 23 14:07:18 antiX12base kernel: [    3.511099] usb usb2: SerialNumber: 0000:00:0b.1
May 23 14:07:18 antiX12base kernel: [    3.512189] hub 2-0:1.0: USB hub found
May 23 14:07:18 antiX12base kernel: [    3.512298] hub 2-0:1.0: 2 ports detected
May 23 14:07:18 antiX12base kernel: [    3.512949] ohci_hcd 0000:00:0a.0: OHCI Host Controller
May 23 14:07:18 antiX12base kernel: [    3.513088] ohci_hcd 0000:00:0a.0: new USB bus registered, assigned bus number 3
May 23 14:07:18 antiX12base kernel: [    3.513298] ohci_hcd 0000:00:0a.0: irq 5, io mem 0xfebd9000
May 23 14:07:18 antiX12base kernel: [    3.613238] usb usb3: New USB device found, idVendor=1d6b, idProduct=0001
May 23 14:07:18 antiX12base kernel: [    3.613351] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
May 23 14:07:18 antiX12base kernel: [    3.613471] usb usb3: Product: OHCI Host Controller
May 23 14:07:18 antiX12base kernel: [    3.613554] usb usb3: Manufacturer: Linux 3.2.0-2-486 ohci_hcd
May 23 14:07:18 antiX12base kernel: [    3.613690] usb usb3: SerialNumber: 0000:00:0a.0
May 23 14:07:18 antiX12base kernel: [    3.620732] hub 3-0:1.0: USB hub found
May 23 14:07:18 antiX12base kernel: [    3.620851] hub 3-0:1.0: 2 ports detected
May 23 14:07:18 antiX12base kernel: [    3.621491] ohci_hcd 0000:00:0b.0: OHCI Host Controller
May 23 14:07:18 antiX12base kernel: [    3.630078] ohci_hcd 0000:00:0b.0: new USB bus registered, assigned bus number 4
May 23 14:07:18 antiX12base kernel: [    3.630313] ohci_hcd 0000:00:0b.0: irq 9, io mem 0xfebda000
May 23 14:07:18 antiX12base kernel: [    3.738504] usb usb4: New USB device found, idVendor=1d6b, idProduct=0001
May 23 14:07:18 antiX12base kernel: [    3.738618] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
May 23 14:07:18 antiX12base kernel: [    3.738737] usb usb4: Product: OHCI Host Controller
May 23 14:07:18 antiX12base kernel: [    3.738819] usb usb4: Manufacturer: Linux 3.2.0-2-486 ohci_hcd
May 23 14:07:18 antiX12base kernel: [    3.738904] usb usb4: SerialNumber: 0000:00:0b.0
May 23 14:07:18 antiX12base kernel: [    3.742019] hub 4-0:1.0: USB hub found
May 23 14:07:18 antiX12base kernel: [    3.742137] hub 4-0:1.0: 2 ports detected
May 23 14:07:18 antiX12base kernel: [    3.751463] scsi0 : pata_rdc
May 23 14:07:18 antiX12base kernel: [    3.754381] scsi1 : pata_rdc
May 23 14:07:18 antiX12base kernel: [    3.754999] ata1: PATA max UDMA/100 cmd 0xef00 ctl 0xee80 bmdma 0xed00 irq 14
May 23 14:07:18 antiX12base kernel: [    3.755099] ata2: PATA max UDMA/100 cmd 0xee00 ctl 0xed80 bmdma 0xed08 irq 14
May 23 14:07:18 antiX12base kernel: [    3.825666] usb 1-1: new high-speed USB device number 2 using ehci_hcd
May 23 14:07:18 antiX12base kernel: [    3.962064] usb 1-1: New USB device found, idVendor=058f, idProduct=6254
May 23 14:07:18 antiX12base kernel: [    3.962194] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
May 23 14:07:18 antiX12base kernel: [    3.963939] hub 1-1:1.0: USB hub found
May 23 14:07:18 antiX12base kernel: [    3.964179] hub 1-1:1.0: 4 ports detected
May 23 14:07:18 antiX12base kernel: [    4.025943] ata1.00: ATA-6: SD04G     RDC SD-IDE HOST CONTROLLER, 01000000, max UDMA/133
May 23 14:07:18 antiX12base kernel: [    4.026086] ata1.00: 7677952 sectors, multi 0: LBA 
May 23 14:07:18 antiX12base kernel: [    4.026184] ata1.00: limited to UDMA/33 due to 40-wire cable
May 23 14:07:18 antiX12base kernel: [    4.026638] ata1.00: configured for UDMA/33
May 23 14:07:18 antiX12base kernel: [    4.027430] scsi 0:0:0:0: Direct-Access     ATA      SD04G     RDC SD 0100 PQ: 0 ANSI: 5
May 23 14:07:18 antiX12base kernel: [    4.072536] sd 0:0:0:0: [sda] 7677952 512-byte logical blocks: (3.93 GB/3.66 GiB)
May 23 14:07:18 antiX12base kernel: [    4.073242] sd 0:0:0:0: [sda] Write Protect is off
May 23 14:07:18 antiX12base kernel: [    4.073654] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
May 23 14:07:18 antiX12base kernel: [    4.079588]  sda: sda1
May 23 14:07:18 antiX12base kernel: [    4.082237] sd 0:0:0:0: [sda] Attached SCSI disk
May 23 14:07:18 antiX12base kernel: [    4.249851] usb 1-1.1: new high-speed USB device number 3 using ehci_hcd
May 23 14:07:18 antiX12base kernel: [    4.361253] usb 1-1.1: New USB device found, idVendor=19d2, idProduct=0117
May 23 14:07:18 antiX12base kernel: [    4.361425] usb 1-1.1: New USB device strings: Mfr=3, Product=2, SerialNumber=4
May 23 14:07:18 antiX12base kernel: [    4.361618] usb 1-1.1: Product: ZTE WCDMA Technologies MSM
May 23 14:07:18 antiX12base kernel: [    4.361734] usb 1-1.1: Manufacturer: ZTE,Incorporated
May 23 14:07:18 antiX12base kernel: [    4.361842] usb 1-1.1: SerialNumber: P680A1ZTED010000
May 23 14:07:18 antiX12base kernel: [    4.435106] usbcore: registered new interface driver uas
May 23 14:07:18 antiX12base kernel: [    4.454310] Initializing USB Mass Storage driver...
May 23 14:07:18 antiX12base kernel: [    4.461228] scsi2 : usb-storage 1-1.1:1.3
May 23 14:07:18 antiX12base kernel: [    4.462091] usbcore: registered new interface driver usb-storage
May 23 14:07:18 antiX12base kernel: [    4.462180] USB Mass Storage support registered.
May 23 14:07:18 antiX12base kernel: [    4.555683] kjournald starting.  Commit interval 5 seconds
May 23 14:07:18 antiX12base kernel: [    4.555835] EXT3-fs (sda1): mounted filesystem with ordered data mode
May 23 14:07:18 antiX12base kernel: [    5.470114] scsi 2:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.31 PQ: 0 ANSI: 2
May 23 14:07:18 antiX12base kernel: [    5.474528] scsi 2:0:0:1: Direct-Access     ZTE      MMC Storage      2.31 PQ: 0 ANSI: 2
May 23 14:07:18 antiX12base kernel: [    5.481909] sd 2:0:0:1: [sdb] Attached SCSI removable disk
May 23 14:07:18 antiX12base kernel: [    6.507732] input: PC Speaker as /devices/platform/pcspkr/input/input0
May 23 14:07:18 antiX12base kernel: [    6.620906] usbcore: registered new interface driver usbserial
May 23 14:07:18 antiX12base kernel: [    6.621150] USB Serial support registered for generic
May 23 14:07:18 antiX12base kernel: [    6.670304] usbcore: registered new interface driver usbserial_generic
May 23 14:07:18 antiX12base kernel: [    6.670408] usbserial: USB Serial Driver core
May 23 14:07:18 antiX12base kernel: [    6.729322] USB Serial support registered for GSM modem (1-port)
May 23 14:07:18 antiX12base kernel: [    6.775202] option 1-1.1:1.0: GSM modem (1-port) converter detected
May 23 14:07:18 antiX12base kernel: [    6.789627] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB0
May 23 14:07:18 antiX12base kernel: [    6.790018] option 1-1.1:1.1: GSM modem (1-port) converter detected
May 23 14:07:18 antiX12base kernel: [    6.814783] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB1
May 23 14:07:18 antiX12base kernel: [    6.815178] option 1-1.1:1.2: GSM modem (1-port) converter detected
May 23 14:07:18 antiX12base kernel: [    6.820964] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB2
May 23 14:07:18 antiX12base kernel: [    6.821806] usbcore: registered new interface driver option
May 23 14:07:18 antiX12base kernel: [    6.821972] option: v0.7.2:USB Driver for GSM modems
May 23 14:07:18 antiX12base kernel: [    6.822895] sr0: scsi-1 drive
May 23 14:07:18 antiX12base kernel: [    6.823013] cdrom: Uniform CD-ROM driver Revision: 3.20
May 23 14:07:18 antiX12base kernel: [    8.391009] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:0e.0/input/input1
May 23 14:07:18 antiX12base kernel: [   10.362912] EXT3-fs (sda1): using internal journal
May 23 14:07:18 antiX12base kernel: [   10.466968] aufs: module is from the staging directory, the quality is unknown, you have been warned.
May 23 14:07:18 antiX12base kernel: [   10.484156] aufs 3.2-20120312
May 23 14:07:18 antiX12base kernel: [   15.192902] fuse init (API version 7.17)
May 23 14:07:18 antiX12base kernel: [   16.348847] eth0: link UP - 100/full
May 23 14:08:29 antiX12base pppd[2142]: Plugin /usr/lib/pppd/2.4.5/nm-pppd-plugin.so loaded.
May 23 14:08:29 antiX12base kernel: [   90.476457] PPP generic driver version 2.4.2
May 23 14:08:29 antiX12base pppd[2142]: pppd 2.4.5 started by root, uid 0
May 23 14:08:29 antiX12base pppd[2142]: Using interface ppp0
May 23 14:08:29 antiX12base pppd[2142]: Connect: ppp0 &amp;lt;--&amp;gt; /dev/ttyUSB2
May 23 14:08:29 antiX12base pppd[2142]: CHAP authentication succeeded
May 23 14:08:29 antiX12base pppd[2142]: CHAP authentication succeeded
May 23 14:08:29 antiX12base kernel: [   90.599235] PPP BSD Compression module registered
May 23 14:08:29 antiX12base kernel: [   90.626101] PPP Deflate Compression module registered
May 23 14:08:34 antiX12base kernel: [   95.864745] usb 1-1.1: USB disconnect, device number 3
May 23 14:08:34 antiX12base kernel: [   95.865461] option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0
May 23 14:08:34 antiX12base kernel: [   95.865615] option 1-1.1:1.0: device disconnected
May 23 14:08:34 antiX12base pppd[2142]: Modem hangup
May 23 14:08:34 antiX12base pppd[2142]: Connection terminated.
May 23 14:08:34 antiX12base kernel: [   95.876355] option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1
May 23 14:08:34 antiX12base kernel: [   95.876514] option 1-1.1:1.1: device disconnected
May 23 14:08:34 antiX12base kernel: [   95.892601] option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2
May 23 14:08:34 antiX12base kernel: [   95.892727] option 1-1.1:1.2: device disconnected
May 23 14:08:34 antiX12base pppd[2142]: Exit.
May 23 14:08:34 antiX12base kernel: [   96.168245] usb 1-1.1: new high-speed USB device number 4 using ehci_hcd
May 23 14:08:35 antiX12base kernel: [   96.279693] usb 1-1.1: New USB device found, idVendor=19d2, idProduct=0117
May 23 14:08:35 antiX12base kernel: [   96.279725] usb 1-1.1: New USB device strings: Mfr=3, Product=2, SerialNumber=4
May 23 14:08:35 antiX12base kernel: [   96.279745] usb 1-1.1: Product: ZTE WCDMA Technologies MSM
May 23 14:08:35 antiX12base kernel: [   96.279763] usb 1-1.1: Manufacturer: ZTE,Incorporated
May 23 14:08:35 antiX12base kernel: [   96.279780] usb 1-1.1: SerialNumber: P680A1ZTED010000
May 23 14:08:35 antiX12base kernel: [   96.289398] option 1-1.1:1.0: GSM modem (1-port) converter detected
May 23 14:08:35 antiX12base kernel: [   96.290771] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB0
May 23 14:08:35 antiX12base kernel: [   96.291904] option 1-1.1:1.1: GSM modem (1-port) converter detected
May 23 14:08:35 antiX12base kernel: [   96.299116] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB1
May 23 14:08:35 antiX12base kernel: [   96.301047] option 1-1.1:1.2: GSM modem (1-port) converter detected
May 23 14:08:35 antiX12base kernel: [   96.302996] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB2
May 23 14:08:35 antiX12base kernel: [   96.312196] scsi3 : usb-storage 1-1.1:1.3
May 23 14:08:35 antiX12base mtp-probe: checking bus 1, device 4: "/sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.1"
May 23 14:08:35 antiX12base mtp-probe: bus: 1, device: 4 was not an MTP device
May 23 14:08:36 antiX12base kernel: [   97.317040] scsi 3:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.31 PQ: 0 ANSI: 2
May 23 14:08:36 antiX12base kernel: [   97.318008] scsi 3:0:0:1: Direct-Access     ZTE      MMC Storage      2.31 PQ: 0 ANSI: 2
May 23 14:08:36 antiX12base kernel: [   97.334357] sr0: scsi-1 drive
May 23 14:08:36 antiX12base kernel: [   97.357316] sd 3:0:0:1: [sdb] Attached SCSI removable disk
May 23 14:09:17 antiX12base pppd[2287]: Plugin /usr/lib/pppd/2.4.5/nm-pppd-plugin.so loaded.
May 23 14:09:17 antiX12base pppd[2287]: pppd 2.4.5 started by root, uid 0
May 23 14:09:17 antiX12base pppd[2287]: Using interface ppp0
May 23 14:09:17 antiX12base pppd[2287]: Connect: ppp0 &amp;lt;--&amp;gt; /dev/ttyUSB2
May 23 14:09:17 antiX12base pppd[2287]: CHAP authentication succeeded
May 23 14:09:17 antiX12base pppd[2287]: CHAP authentication succeeded
May 23 14:09:24 antiX12base kernel: [  146.033339] usb 1-1.1: USB disconnect, device number 4
May 23 14:09:24 antiX12base kernel: [  146.034020] option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0
May 23 14:09:24 antiX12base kernel: [  146.034174] option 1-1.1:1.0: device disconnected
May 23 14:09:24 antiX12base pppd[2287]: Modem hangup
May 23 14:09:24 antiX12base pppd[2287]: Connection terminated.
May 23 14:09:24 antiX12base kernel: [  146.044505] option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1
May 23 14:09:24 antiX12base kernel: [  146.044664] option 1-1.1:1.1: device disconnected
May 23 14:09:24 antiX12base kernel: [  146.068068] option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2
May 23 14:09:24 antiX12base kernel: [  146.068195] option 1-1.1:1.2: device disconnected
May 23 14:09:24 antiX12base pppd[2287]: Exit.
May 23 14:09:25 antiX12base kernel: [  146.335722] usb 1-1.1: new high-speed USB device number 5 using ehci_hcd
May 23 14:09:25 antiX12base kernel: [  146.447031] usb 1-1.1: New USB device found, idVendor=19d2, idProduct=0117
May 23 14:09:25 antiX12base kernel: [  146.447063] usb 1-1.1: New USB device strings: Mfr=3, Product=2, SerialNumber=4
May 23 14:09:25 antiX12base kernel: [  146.447084] usb 1-1.1: Product: ZTE WCDMA Technologies MSM
May 23 14:09:25 antiX12base kernel: [  146.447101] usb 1-1.1: Manufacturer: ZTE,Incorporated
May 23 14:09:25 antiX12base kernel: [  146.447118] usb 1-1.1: SerialNumber: P680A1ZTED010000
May 23 14:09:25 antiX12base kernel: [  146.458176] option 1-1.1:1.0: GSM modem (1-port) converter detected
May 23 14:09:25 antiX12base kernel: [  146.459380] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB0
May 23 14:09:25 antiX12base kernel: [  146.461821] option 1-1.1:1.1: GSM modem (1-port) converter detected
May 23 14:09:25 antiX12base kernel: [  146.462918] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB1
May 23 14:09:25 antiX12base kernel: [  146.468409] option 1-1.1:1.2: GSM modem (1-port) converter detected
May 23 14:09:25 antiX12base kernel: [  146.469659] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB2
May 23 14:09:25 antiX12base mtp-probe: checking bus 1, device 5: "/sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.1"
May 23 14:09:25 antiX12base kernel: [  146.475762] scsi4 : usb-storage 1-1.1:1.3
May 23 14:09:25 antiX12base mtp-probe: bus: 1, device: 5 was not an MTP device
May 23 14:09:26 antiX12base kernel: [  147.477264] scsi 4:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.31 PQ: 0 ANSI: 2
May 23 14:09:26 antiX12base kernel: [  147.478093] scsi 4:0:0:1: Direct-Access     ZTE      MMC Storage      2.31 PQ: 0 ANSI: 2
May 23 14:09:26 antiX12base kernel: [  147.491932] sr0: scsi-1 drive
May 23 14:09:26 antiX12base kernel: [  147.508296] sd 4:0:0:1: [sdb] Attached SCSI removable disk
May 23 14:09:26 antiX12base kernel: [  147.593886] option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0
May 23 14:09:26 antiX12base kernel: [  147.594041] option 1-1.1:1.0: device disconnected
May 23 14:09:26 antiX12base kernel: [  147.600430] option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1
May 23 14:09:26 antiX12base kernel: [  147.600619] option 1-1.1:1.1: device disconnected
May 23 14:09:26 antiX12base kernel: [  147.611695] option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2
May 23 14:09:26 antiX12base kernel: [  147.611827] option 1-1.1:1.2: device disconnected
May 23 14:09:26 antiX12base kernel: [  147.628729] usb 1-1.1: USB disconnect, device number 5
May 23 14:09:26 antiX12base kernel: [  147.887633] usb 1-1.1: new high-speed USB device number 6 using ehci_hcd
May 23 14:09:26 antiX12base kernel: [  147.999188] usb 1-1.1: New USB device found, idVendor=19d2, idProduct=0117
May 23 14:09:26 antiX12base kernel: [  147.999221] usb 1-1.1: New USB device strings: Mfr=3, Product=2, SerialNumber=4
May 23 14:09:26 antiX12base kernel: [  147.999242] usb 1-1.1: Product: ZTE WCDMA Technologies MSM
May 23 14:09:26 antiX12base kernel: [  147.999260] usb 1-1.1: Manufacturer: ZTE,Incorporated
May 23 14:09:26 antiX12base kernel: [  147.999277] usb 1-1.1: SerialNumber: P680A1ZTED010000
May 23 14:09:26 antiX12base kernel: [  148.005190] option 1-1.1:1.0: GSM modem (1-port) converter detected
May 23 14:09:26 antiX12base kernel: [  148.006355] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB0
May 23 14:09:26 antiX12base kernel: [  148.007242] option 1-1.1:1.1: GSM modem (1-port) converter detected
May 23 14:09:26 antiX12base kernel: [  148.010534] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB1
May 23 14:09:26 antiX12base kernel: [  148.015898] option 1-1.1:1.2: GSM modem (1-port) converter detected
May 23 14:09:26 antiX12base kernel: [  148.017392] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB2
May 23 14:09:26 antiX12base kernel: [  148.027952] scsi5 : usb-storage 1-1.1:1.3
May 23 14:09:27 antiX12base mtp-probe: checking bus 1, device 6: "/sys/devices/pci0000:00/0000:00:0a.1/usb1/1-1/1-1.1"
May 23 14:09:27 antiX12base mtp-probe: bus: 1, device: 6 was not an MTP device
May 23 14:09:27 antiX12base kernel: [  149.032287] scsi 5:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.31 PQ: 0 ANSI: 2
May 23 14:09:27 antiX12base kernel: [  149.033115] scsi 5:0:0:1: Direct-Access     ZTE      MMC Storage      2.31 PQ: 0 ANSI: 2
May 23 14:09:27 antiX12base kernel: [  149.062842] sr0: scsi-1 drive
May 23 14:09:27 antiX12base kernel: [  149.082675] sd 5:0:0:1: [sdb] Attached SCSI removable disk
May 23 14:11:38 antiX12base kernel: [    0.000000] Initializing cgroup subsys cpuset
May 23 14:11:38 antiX12base kernel: [    0.000000] Initializing cgroup subsys cpu
May 23 14:11:38 antiX12base kernel: [    0.000000] Linux version 3.2.0-2-486 (Debian 3.2.16-1) (debian-kernel&amp;lt; at &amp;gt;lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-4) ) #1 Mon Apr 30 05:10:18 UTC 2012
May 23 14:11:38 antiX12base kernel: [    0.000000] BIOS-provided physical RAM map:
May 23 14:11:38 antiX12base kernel: [    0.000000]  BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
May 23 14:11:38 antiX12base kernel: [    0.000000]  BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
May 23 14:11:38 antiX12base kernel: [    0.000000]  BIOS-e820: 00000000000e4000 - 0000000000100000 (reserved)
May 23 14:11:38 antiX12base kernel: [    0.000000]  BIOS-e820: 0000000000100000 - 0000000020000000 (usable)
May 23 14:11:38 antiX12base syslog-ng[1573]: syslog-ng starting up; version='3.3.4'
May 23 14:11:38 antiX12base kernel: [    0.000000]  BIOS-e820: 00000000ff000000 - 0000000100000000 (reserved)
May 23 14:11:38 antiX12base kernel: [    0.000000] Notice: NX (Execute Disable) protection missing in CPU!
May 23 14:11:38 antiX12base kernel: [    0.000000] DMI not present or invalid.
May 23 14:11:38 antiX12base kernel: [    0.000000] last_pfn = 0x20000 max_arch_pfn = 0x100000
May 23 14:11:38 antiX12base kernel: [    0.000000] init_memory_mapping: 0000000000000000-0000000020000000
May 23 14:11:38 antiX12base kernel: [    0.000000] RAMDISK: 1f623000 - 1fff0000
May 23 14:11:38 antiX12base kernel: [    0.000000] ACPI Error: A valid RSDP was not found (20110623/tbxfroot-219)
May 23 14:11:38 antiX12base kernel: [    0.000000] 0MB HIGHMEM available.
May 23 14:11:38 antiX12base kernel: [    0.000000] 512MB LOWMEM available.
May 23 14:11:38 antiX12base kernel: [    0.000000]   mapped low ram: 0 - 20000000
May 23 14:11:38 antiX12base kernel: [    0.000000]   low ram: 0 - 20000000
May 23 14:11:38 antiX12base kernel: [    0.000000] Zone PFN ranges:
May 23 14:11:38 antiX12base kernel: [    0.000000]   DMA      0x00000010 -&amp;gt; 0x00001000
May 23 14:11:38 antiX12base kernel: [    0.000000]   Normal   0x00001000 -&amp;gt; 0x00020000
May 23 14:11:38 antiX12base kernel: [    0.000000]   HighMem  empty
May 23 14:11:38 antiX12base kernel: [    0.000000] Movable zone start PFN for each node
May 23 14:11:38 antiX12base kernel: [    0.000000] early_node_map[2] active PFN ranges
May 23 14:11:38 antiX12base kernel: [    0.000000]     0: 0x00000010 -&amp;gt; 0x0000009f
May 23 14:11:38 antiX12base kernel: [    0.000000]     0: 0x00000100 -&amp;gt; 0x00020000
May 23 14:11:38 antiX12base kernel: [    0.000000] Using APIC driver default
May 23 14:11:38 antiX12base kernel: [    0.000000] SFI: Simple Firmware Interface v0.81 http://simplefirmware.org
May 23 14:11:38 antiX12base kernel: [    0.000000] No local APIC present or hardware disabled
May 23 14:11:38 antiX12base kernel: [    0.000000] APIC: disable apic facility
May 23 14:11:38 antiX12base kernel: [    0.000000] APIC: switched to apic NOOP
May 23 14:11:38 antiX12base kernel: [    0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
May 23 14:11:38 antiX12base kernel: [    0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e4000
May 23 14:11:38 antiX12base kernel: [    0.000000] PM: Registered nosave memory: 00000000000e4000 - 0000000000100000
May 23 14:11:38 antiX12base kernel: [    0.000000] Allocating PCI resources starting at 20000000 (gap: 20000000:df000000)
May 23 14:11:38 antiX12base kernel: [    0.000000] Booting paravirtualized kernel on bare hardware
May 23 14:11:38 antiX12base kernel: [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129935
May 23 14:11:38 antiX12base kernel: [    0.000000] Kernel command line: root=UUID=7c5b4bf1-e3e5-4f3b-8fdf-27f6620ca748 ro
May 23 14:11:38 antiX12base kernel: [    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
May 23 14:11:38 antiX12base kernel: [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
May 23 14:11:38 antiX12base kernel: [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
May 23 14:11:38 antiX12base kernel: [    0.000000] Initializing CPU#0
May 23 14:11:38 antiX12base kernel: [    0.000000] Initializing HighMem for node 0 (00000000:00000000)
May 23 14:11:38 antiX12base kernel: [    0.000000] Memory: 503876k/524288k available (2590k kernel code, 19960k reserved, 1325k data, 448k init, 0k highmem)
May 23 14:11:38 antiX12base kernel: [    0.000000] virtual kernel memory layout:
May 23 14:11:38 antiX12base kernel: [    0.000000]     fixmap  : 0xfffa1000 - 0xfffff000   ( 376 kB)
May 23 14:11:38 antiX12base kernel: [    0.000000]     pkmap   : 0xff800000 - 0xffc00000   (4096 kB)
May 23 14:11:38 antiX12base kernel: [    0.000000]     vmalloc : 0xe0800000 - 0xff7fe000   ( 495 MB)
May 23 14:11:38 antiX12base kernel: [    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
May 23 14:11:38 antiX12base kernel: [    0.000000]       .init : 0xc13d3000 - 0xc1443000   ( 448 kB)
May 23 14:11:38 antiX12base kernel: [    0.000000]       .data : 0xc128782c - 0xc13d2e00   (1325 kB)
May 23 14:11:38 antiX12base kernel: [    0.000000]       .text : 0xc1000000 - 0xc128782c   (2590 kB)
May 23 14:11:38 antiX12base kernel: [    0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.
May 23 14:11:38 antiX12base kernel: [    0.000000] NR_IRQS:2304 nr_irqs:256 16
May 23 14:11:38 antiX12base kernel: [    0.000000] Console: colour VGA+ 80x25
May 23 14:11:38 antiX12base kernel: [    0.000000] console [tty0] enabled
May 23 14:11:38 antiX12base kernel: [    0.000000] Fast TSC calibration using PIT
May 23 14:11:38 antiX12base kernel: [    0.000000] Detected 933.198 MHz processor.
May 23 14:11:38 antiX12base kernel: [    0.008009] Calibrating delay loop (skipped), value calculated using timer frequency.. 1866.39 BogoMIPS (lpj=3732792)
May 23 14:11:38 antiX12base kernel: [    0.012085] pid_max: default: 32768 minimum: 301
May 23 14:11:38 antiX12base kernel: [    0.012468] Security Framework initialized
May 23 14:11:38 antiX12base kernel: [    0.012564] AppArmor: AppArmor disabled by boot time parameter
May 23 14:11:38 antiX12base kernel: [    0.012724] Mount-cache hash table entries: 512
May 23 14:11:38 antiX12base kernel: [    0.013508] Initializing cgroup subsys cpuacct
May 23 14:11:38 antiX12base kernel: [    0.013603] Initializing cgroup subsys memory
May 23 14:11:38 antiX12base kernel: [    0.013742] Initializing cgroup subsys devices
May 23 14:11:38 antiX12base kernel: [    0.013825] Initializing cgroup subsys freezer
May 23 14:11:38 antiX12base kernel: [    0.013904] Initializing cgroup subsys net_cls
May 23 14:11:38 antiX12base kernel: [    0.013984] Initializing cgroup subsys blkio
May 23 14:11:38 antiX12base kernel: [    0.014108] Initializing cgroup subsys perf_event
May 23 14:11:38 antiX12base kernel: [    0.014378] CPU: Vortex86 SoC 05/08 stepping 06
May 23 14:11:38 antiX12base kernel: [    0.016730] Performance Events: 
May 23 14:11:38 antiX12base kernel: [    0.017817] NMI watchdog disabled (cpu0): hardware events not enabled
May 23 14:11:38 antiX12base kernel: [    0.018863] devtmpfs: initialized
May 23 14:11:38 antiX12base kernel: [    0.021177] print_constraints: dummy: 
May 23 14:11:38 antiX12base kernel: [    0.021689] NET: Registered protocol family 16
May 23 14:11:38 antiX12base kernel: [    0.023017] EISA bus registered
May 23 14:11:38 antiX12base kernel: [    0.024364] PCI: PCI BIOS revision 3.00 entry at 0xf0031, last bus=0
May 23 14:11:38 antiX12base kernel: [    0.024456] PCI: Using configuration type 1 for base access
May 23 14:11:38 antiX12base kernel: [    0.033841] bio: create slab &amp;lt;bio-0&amp;gt; at 0
May 23 14:11:38 antiX12base kernel: [    0.034518] ACPI: Interpreter disabled.
May 23 14:11:38 antiX12base kernel: [    0.035139] vgaarb: loaded
May 23 14:11:38 antiX12base kernel: [    0.035832] PCI: Probing PCI hardware
May 23 14:11:38 antiX12base kernel: [    0.040668] vgaarb: device added: PCI:0000:00:0d.0,decodes=io+mem,owns=io+mem,locks=none
May 23 14:11:38 antiX12base kernel: [    0.041301] pci 0000:00:07.0: default IRQ router [17f3:6036]
May 23 14:11:38 antiX12base kernel: [    0.042468] Switching to clocksource pit
May 23 14:11:38 antiX12base kernel: [    0.050900] pnp: PnP ACPI: disabled
May 23 14:11:38 antiX12base kernel: [    0.050992] PnPBIOS: Scanning system for PnP BIOS support...
May 23 14:11:38 antiX12base kernel: [    0.051136] PnPBIOS: Found PnP BIOS installation structure at 0xc00f3150
May 23 14:11:38 antiX12base kernel: [    0.051229] PnPBIOS: PnP BIOS version 1.0, entry 0xf0000:0x3cca, dseg 0xf0000
May 23 14:11:38 antiX12base kernel: [    0.051997] system 00:00: [mem 0x00000000-0x0009fbff] could not be reserved
May 23 14:11:38 antiX12base kernel: [    0.052102] system 00:00: [mem 0x0009fc00-0x0009ffff] could not be reserved
May 23 14:11:38 antiX12base kernel: [    0.052200] system 00:00: [mem 0x000e4000-0x000fffff] could not be reserved
May 23 14:11:38 antiX12base kernel: [    0.052298] system 00:00: [mem 0x00100000-0x1fffffff] could not be reserved
May 23 14:11:38 antiX12base kernel: [    0.052398] system 00:00: [mem 0xff000000-0xfffbffff] has been reserved
May 23 14:11:38 antiX12base kernel: [    0.052496] system 00:00: [mem 0xfffc0000-0xffffffff] has been reserved
May 23 14:11:38 antiX12base kernel: [    0.055600] system 00:09: [io  0x04d0-0x04d1] has been reserved
May 23 14:11:38 antiX12base kernel: [    0.055698] system 00:09: [io  0x0cf8-0x0cff] could not be reserved
May 23 14:11:38 antiX12base kernel: [    0.055791] system 00:09: [io  0xfc00-0xfc0f] has been reserved
May 23 14:11:38 antiX12base kernel: [    0.056259] system 00:0a: [io  0x03f0-0x03f5] has been reserved
May 23 14:11:38 antiX12base kernel: [    0.056398] PnPBIOS: 11 nodes reported by PnP BIOS; 11 recorded by driver
May 23 14:11:38 antiX12base kernel: [    0.079731] NET: Registered protocol family 2
May 23 14:11:38 antiX12base kernel: [    0.080186] IP route cache hash table entries: 4096 (order: 2, 16384 bytes)
May 23 14:11:38 antiX12base kernel: [    0.081748] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
May 23 14:11:38 antiX12base kernel: [    0.082331] TCP bind hash table entries: 16384 (order: 4, 65536 bytes)
May 23 14:11:38 antiX12base kernel: [    0.082648] TCP: Hash tables configured (established 16384 bind 16384)
May 23 14:11:38 antiX12base kernel: [    0.082738] TCP reno registered
May 23 14:11:38 antiX12base kernel: [    0.082817] UDP hash table entries: 256 (order: 0, 4096 bytes)
May 23 14:11:38 antiX12base kernel: [    0.082921] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
May 23 14:11:38 antiX12base kernel: [    0.083423] NET: Registered protocol family 1
May 23 14:11:38 antiX12base kernel: [    0.233916] Unpacking initramfs...
May 23 14:11:38 antiX12base kernel: [    2.351843] Freeing initrd memory: 10036k freed
May 23 14:11:38 antiX12base kernel: [    2.394519] audit: initializing netlink socket (disabled)
May 23 14:11:38 antiX12base kernel: [    2.394670] type=2000 audit(1337775072.392:1): initialized
May 23 14:11:38 antiX12base kernel: [    2.473515] HugeTLB registered 4 MB page size, pre-allocated 0 pages
May 23 14:11:38 antiX12base kernel: [    2.474429] VFS: Disk quotas dquot_6.5.2
May 23 14:11:38 antiX12base kernel: [    2.474656] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
May 23 14:11:38 antiX12base kernel: [    2.475092] msgmni has been set to 1003
May 23 14:11:38 antiX12base kernel: [    2.476258] alg: No test for stdrng (krng)
May 23 14:11:38 antiX12base kernel: [    2.476558] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
May 23 14:11:38 antiX12base kernel: [    2.476684] io scheduler noop registered
May 23 14:11:38 antiX12base kernel: [    2.476760] io scheduler deadline registered
May 23 14:11:38 antiX12base kernel: [    2.476888] io scheduler cfq registered (default)
May 23 14:11:38 antiX12base kernel: [    2.477989] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
May 23 14:11:38 antiX12base kernel: [    2.478419] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
May 23 14:11:38 antiX12base kernel: [    2.478511] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
May 23 14:11:38 antiX12base kernel: [    2.479863] isapnp: Scanning for PnP cards...
May 23 14:11:38 antiX12base kernel: [    2.833665] isapnp: No Plug &amp;amp; Play device found
May 23 14:11:38 antiX12base kernel: [    2.834172] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
May 23 14:11:38 antiX12base kernel: [    2.838103] Linux agpgart interface v0.103
May 23 14:11:38 antiX12base kernel: [    2.840371] i8042: PNP: PS/2 Controller [PNP0303] at 0x60,0x64 irq 1
May 23 14:11:38 antiX12base kernel: [    2.840466] i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp
May 23 14:11:38 antiX12base kernel: [    2.841397] serio: i8042 KBD port at 0x60,0x64 irq 1
May 23 14:11:38 antiX12base kernel: [    2.842623] mousedev: PS/2 mouse device common for all mice
May 23 14:11:38 antiX12base kernel: [    2.843505] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0
May 23 14:11:38 antiX12base kernel: [    2.843644] rtc0: alarms up to one day, 114 bytes nvram
May 23 14:11:38 antiX12base kernel: [    2.844323] EISA: Probing bus 0 at eisa.0
May 23 14:11:38 antiX12base kernel: [    2.844593] EISA: Detected 0 cards.
May 23 14:11:38 antiX12base kernel: [    2.844669] cpuidle: using governor ladder
May 23 14:11:38 antiX12base kernel: [    2.844745] cpuidle: using governor menu
May 23 14:11:38 antiX12base kernel: [    2.846207] TCP cubic registered
May 23 14:11:38 antiX12base kernel: [    2.846453] NET: Registered protocol family 10
May 23 14:11:38 antiX12base kernel: [    2.849834] Mobile IPv6
May 23 14:11:38 antiX12base kernel: [    2.849914] NET: Registered protocol family 17
May 23 14:11:38 antiX12base kernel: [    2.850015] Registering the dns_resolver key type
May 23 14:11:38 antiX12base kernel: [    2.850173] Using IPI Shortcut mode
May 23 14:11:38 antiX12base kernel: [    2.851301] registered taskstats version 1
May 23 14:11:38 antiX12base kernel: [    2.851973] rtc_cmos 00:04: setting system clock to 2012-05-23 12:11:13 UTC (1337775073)
May 23 14:11:38 antiX12base kernel: [    2.852339] Initializing network drop monitor service
May 23 14:11:38 antiX12base kernel: [    2.852979] Freeing unused kernel memory: 448k freed
May 23 14:11:38 antiX12base kernel: [    2.855217] Write protecting the kernel text: 2592k
May 23 14:11:38 antiX12base kernel: [    2.855447] Write protecting the kernel read-only data: 1060k
May 23 14:11:38 antiX12base kernel: [    3.184009] r6040: RDC R6040 NAPI net driver,version 0.28 (07Oct2011)
May 23 14:11:38 antiX12base kernel: [    3.304131] r6040_eth_mii: probed
May 23 14:11:38 antiX12base kernel: [    3.304335] r6040 0000:00:08.0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:01)
May 23 14:11:38 antiX12base kernel: [    3.411728] usbcore: registered new interface driver usbfs
May 23 14:11:38 antiX12base kernel: [    3.412014] usbcore: registered new interface driver hub
May 23 14:11:38 antiX12base kernel: [    3.431596] usbcore: registered new device driver usb
May 23 14:11:38 antiX12base kernel: [    3.460028] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
May 23 14:11:38 antiX12base kernel: [    3.460293] ehci_hcd 0000:00:0a.1: EHCI Host Controller
May 23 14:11:38 antiX12base kernel: [    3.460515] ehci_hcd 0000:00:0a.1: new USB bus registered, assigned bus number 1
May 23 14:11:38 antiX12base kernel: [    3.465726] Switching to clocksource tsc
May 23 14:11:38 antiX12base kernel: [    3.467961] SCSI subsystem initialized
May 23 14:11:38 antiX12base kernel: [    3.495762] ehci_hcd 0000:00:0a.1: irq 15, io mem 0xfebdb800
May 23 14:11:38 antiX12base kernel: [    3.528825] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
May 23 14:11:38 antiX12base kernel: [    3.569123] ehci_hcd 0000:00:0a.1: USB 2.0 started, EHCI 1.00
May 23 14:11:38 antiX12base kernel: [    3.569381] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
May 23 14:11:38 antiX12base kernel: [    3.569479] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
May 23 14:11:38 antiX12base kernel: [    3.569600] usb usb1: Product: EHCI Host Controller
May 23 14:11:38 antiX12base kernel: [    3.569728] usb usb1: Manufacturer: Linux 3.2.0-2-486 ehci_hcd
May 23 14:11:38 antiX12base kernel: [    3.569816] usb usb1: SerialNumber: 0000:00:0a.1
May 23 14:11:38 antiX12base kernel: [    3.583695] hub 1-0:1.0: USB hub found
May 23 14:11:38 antiX12base kernel: [    3.583818] hub 1-0:1.0: 2 ports detected
May 23 14:11:38 antiX12base kernel: [    3.584475] ohci_hcd 0000:00:0a.0: OHCI Host Controller
May 23 14:11:38 antiX12base kernel: [    3.584671] ohci_hcd 0000:00:0a.0: new USB bus registered, assigned bus number 2
May 23 14:11:38 antiX12base kernel: [    3.584887] ohci_hcd 0000:00:0a.0: irq 5, io mem 0xfebd9000
May 23 14:11:38 antiX12base kernel: [    3.759200] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
May 23 14:11:38 antiX12base kernel: [    3.759311] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
May 23 14:11:38 antiX12base kernel: [    3.759432] usb usb2: Product: OHCI Host Controller
May 23 14:11:38 antiX12base kernel: [    3.759515] usb usb2: Manufacturer: Linux 3.2.0-2-486 ohci_hcd
May 23 14:11:38 antiX12base kernel: [    3.759600] usb usb2: SerialNumber: 0000:00:0a.0
May 23 14:11:38 antiX12base kernel: [    3.765766] hub 2-0:1.0: USB hub found
May 23 14:11:38 antiX12base kernel: [    3.765894] hub 2-0:1.0: 2 ports detected
May 23 14:11:38 antiX12base kernel: [    3.766561] ehci_hcd 0000:00:0b.1: EHCI Host Controller
May 23 14:11:38 antiX12base kernel: [    3.766698] ehci_hcd 0000:00:0b.1: new USB bus registered, assigned bus number 3
May 23 14:11:38 antiX12base kernel: [    3.789790] ehci_hcd 0000:00:0b.1: irq 10, io mem 0xfebdbc00
May 23 14:11:38 antiX12base kernel: [    3.801731] ehci_hcd 0000:00:0b.1: USB 2.0 started, EHCI 1.00
May 23 14:11:38 antiX12base kernel: [    3.801965] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002
May 23 14:11:38 antiX12base kernel: [    3.802062] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
May 23 14:11:38 antiX12base kernel: [    3.802181] usb usb3: Product: EHCI Host Controller
May 23 14:11:38 antiX12base kernel: [    3.802263] usb usb3: Manufacturer: Linux 3.2.0-2-486 ehci_hcd
May 23 14:11:38 antiX12base kernel: [    3.802348] usb usb3: SerialNumber: 0000:00:0b.1
May 23 14:11:38 antiX12base kernel: [    3.804040] hub 3-0:1.0: USB hub found
May 23 14:11:38 antiX12base kernel: [    3.804154] hub 3-0:1.0: 2 ports detected
May 23 14:11:38 antiX12base kernel: [    3.817765] scsi0 : pata_rdc
May 23 14:11:38 antiX12base kernel: [    3.825842] scsi1 : pata_rdc
May 23 14:11:38 antiX12base kernel: [    3.827000] ata1: PATA max UDMA/100 cmd 0xef00 ctl 0xee80 bmdma 0xed00 irq 14
May 23 14:11:38 antiX12base kernel: [    3.827100] ata2: PATA max UDMA/100 cmd 0xee00 ctl 0xed80 bmdma 0xed08 irq 14
May 23 14:11:38 antiX12base kernel: [    3.827682] ohci_hcd 0000:00:0b.0: OHCI Host Controller
May 23 14:11:38 antiX12base kernel: [    3.827831] ohci_hcd 0000:00:0b.0: new USB bus registered, assigned bus number 4
May 23 14:11:38 antiX12base kernel: [    3.828052] ohci_hcd 0000:00:0b.0: irq 9, io mem 0xfebda000
May 23 14:11:38 antiX12base kernel: [    3.911696] usb usb4: New USB device found, idVendor=1d6b, idProduct=0001
May 23 14:11:38 antiX12base kernel: [    3.911805] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
May 23 14:11:38 antiX12base kernel: [    3.911925] usb usb4: Product: OHCI Host Controller
May 23 14:11:38 antiX12base kernel: [    3.912008] usb usb4: Manufacturer: Linux 3.2.0-2-486 ohci_hcd
May 23 14:11:38 antiX12base kernel: [    3.912094] usb usb4: SerialNumber: 0000:00:0b.0
May 23 14:11:38 antiX12base kernel: [    3.913859] hub 4-0:1.0: USB hub found
May 23 14:11:38 antiX12base kernel: [    3.913976] hub 4-0:1.0: 2 ports detected
May 23 14:11:38 antiX12base kernel: [    4.098083] ata1.00: ATA-6: SD04G     RDC SD-IDE HOST CONTROLLER, 01000000, max UDMA/133
May 23 14:11:38 antiX12base kernel: [    4.098220] ata1.00: 7677952 sectors, multi 0: LBA 
May 23 14:11:38 antiX12base kernel: [    4.098317] ata1.00: limited to UDMA/33 due to 40-wire cable
May 23 14:11:38 antiX12base kernel: [    4.098771] ata1.00: configured for UDMA/33
May 23 14:11:38 antiX12base kernel: [    4.099539] scsi 0:0:0:0: Direct-Access     ATA      SD04G     RDC SD 0100 PQ: 0 ANSI: 5
May 23 14:11:38 antiX12base kernel: [    4.126512] usb 3-1: new high-speed USB device number 2 using ehci_hcd
May 23 14:11:38 antiX12base kernel: [    4.160009] sd 0:0:0:0: [sda] 7677952 512-byte logical blocks: (3.93 GB/3.66 GiB)
May 23 14:11:38 antiX12base kernel: [    4.160678] sd 0:0:0:0: [sda] Write Protect is off
May 23 14:11:38 antiX12base kernel: [    4.161012] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
May 23 14:11:38 antiX12base kernel: [    4.166760]  sda: sda1
May 23 14:11:38 antiX12base kernel: [    4.169467] sd 0:0:0:0: [sda] Attached SCSI disk
May 23 14:11:38 antiX12base kernel: [    4.261389] usb 3-1: New USB device found, idVendor=19d2, idProduct=2000
May 23 14:11:38 antiX12base kernel: [    4.261596] usb 3-1: New USB device strings: Mfr=3, Product=2, SerialNumber=4
May 23 14:11:38 antiX12base kernel: [    4.261721] usb 3-1: Product: ZTE WCDMA Technologies MSM
May 23 14:11:38 antiX12base kernel: [    4.261860] usb 3-1: Manufacturer: ZTE,Incorporated
May 23 14:11:38 antiX12base kernel: [    4.261971] usb 3-1: SerialNumber: P680A1ZTED010000
May 23 14:11:38 antiX12base kernel: [    4.289472] usbcore: registered new interface driver uas
May 23 14:11:38 antiX12base kernel: [    4.313361] Initializing USB Mass Storage driver...
May 23 14:11:38 antiX12base kernel: [    4.314498] scsi2 : usb-storage 3-1:1.0
May 23 14:11:38 antiX12base kernel: [    4.315844] usbcore: registered new interface driver usb-storage
May 23 14:11:38 antiX12base kernel: [    4.316057] USB Mass Storage support registered.
May 23 14:11:38 antiX12base kernel: [    4.588001] EXT3-fs (sda1): recovery required on readonly filesystem
May 23 14:11:38 antiX12base kernel: [    4.588108] EXT3-fs (sda1): write access will be enabled during recovery
May 23 14:11:38 antiX12base kernel: [    5.315923] scsi 2:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.31 PQ: 0 ANSI: 2
May 23 14:11:38 antiX12base kernel: [    5.344214] sr0: scsi-1 drive
May 23 14:11:38 antiX12base kernel: [    5.344338] cdrom: Uniform CD-ROM driver Revision: 3.20
May 23 14:11:38 antiX12base kernel: [   13.717142] kjournald starting.  Commit interval 5 seconds
May 23 14:11:38 antiX12base kernel: [   13.717311] EXT3-fs (sda1): recovery complete
May 23 14:11:38 antiX12base kernel: [   13.722798] EXT3-fs (sda1): mounted filesystem with ordered data mode
May 23 14:11:38 antiX12base kernel: [   15.597794] input: PC Speaker as /devices/platform/pcspkr/input/input0
May 23 14:11:38 antiX12base kernel: [   16.965762] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:0e.0/input/input1
May 23 14:11:38 antiX12base kernel: [   18.902801] EXT3-fs (sda1): using internal journal
May 23 14:11:38 antiX12base kernel: [   19.006864] aufs: module is from the staging directory, the quality is unknown, you have been warned.
May 23 14:11:38 antiX12base kernel: [   19.024065] aufs 3.2-20120312
May 23 14:11:38 antiX12base kernel: [   19.988611] usb 3-1: USB disconnect, device number 2
May 23 14:11:38 antiX12base kernel: [   23.509779] usb 3-1: new high-speed USB device number 3 using ehci_hcd
May 23 14:11:38 antiX12base kernel: [   23.647595] usb 3-1: New USB device found, idVendor=19d2, idProduct=0117
May 23 14:11:38 antiX12base kernel: [   23.647730] usb 3-1: New USB device strings: Mfr=3, Product=2, SerialNumber=4
May 23 14:11:38 antiX12base kernel: [   23.647853] usb 3-1: Product: ZTE WCDMA Technologies MSM
May 23 14:11:38 antiX12base kernel: [   23.647962] usb 3-1: Manufacturer: ZTE,Incorporated
May 23 14:11:38 antiX12base kernel: [   23.648071] usb 3-1: SerialNumber: P680A1ZTED010000
May 23 14:11:38 antiX12base kernel: [   23.667351] scsi3 : usb-storage 3-1:1.3
May 23 14:11:38 antiX12base kernel: [   23.825065] usbcore: registered new interface driver usbserial
May 23 14:11:38 antiX12base kernel: [   23.825331] USB Serial support registered for generic
May 23 14:11:38 antiX12base kernel: [   23.827677] usbcore: registered new interface driver usbserial_generic
May 23 14:11:38 antiX12base kernel: [   23.827777] usbserial: USB Serial Driver core
May 23 14:11:38 antiX12base kernel: [   23.886151] USB Serial support registered for GSM modem (1-port)
May 23 14:11:38 antiX12base kernel: [   23.888558] option 3-1:1.0: GSM modem (1-port) converter detected
May 23 14:11:38 antiX12base kernel: [   23.895160] usb 3-1: GSM modem (1-port) converter now attached to ttyUSB0
May 23 14:11:38 antiX12base kernel: [   23.895505] option 3-1:1.1: GSM modem (1-port) converter detected
May 23 14:11:38 antiX12base kernel: [   23.904753] usb 3-1: GSM modem (1-port) converter now attached to ttyUSB1
May 23 14:11:38 antiX12base kernel: [   23.905108] option 3-1:1.2: GSM modem (1-port) converter detected
May 23 14:11:38 antiX12base kernel: [   23.921681] usb 3-1: GSM modem (1-port) converter now attached to ttyUSB2
May 23 14:11:38 antiX12base kernel: [   23.927569] usbcore: registered new interface driver option
May 23 14:11:38 antiX12base kernel: [   23.927665] option: v0.7.2:USB Driver for GSM modems
May 23 14:11:38 antiX12base kernel: [   24.026049] fuse init (API version 7.17)
May 23 14:11:38 antiX12base kernel: [   24.310200] eth0: link UP - 100/full
May 23 14:11:38 antiX12base kernel: [   24.674261] scsi 3:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.31 PQ: 0 ANSI: 2
May 23 14:11:38 antiX12base kernel: [   24.675328] scsi 3:0:0:1: Direct-Access     ZTE      MMC Storage      2.31 PQ: 0 ANSI: 2
May 23 14:11:38 antiX12base kernel: [   24.691912] sr0: scsi-1 drive
May 23 14:11:38 antiX12base kernel: [   24.718559] sd 3:0:0:1: [sdb] Attached SCSI removable disk
May 23 14:12:49 antiX12base pppd[2386]: Plugin /usr/lib/pppd/2.4.5/nm-pppd-plugin.so loaded.
May 23 14:12:49 antiX12base kernel: [   99.092686] PPP generic driver version 2.4.2
May 23 14:12:49 antiX12base pppd[2386]: pppd 2.4.5 started by root, uid 0
May 23 14:12:49 antiX12base pppd[2386]: Using interface ppp0
May 23 14:12:49 antiX12base pppd[2386]: Connect: ppp0 &amp;lt;--&amp;gt; /dev/ttyUSB2
May 23 14:12:49 antiX12base pppd[2386]: CHAP authentication succeeded
May 23 14:12:49 antiX12base pppd[2386]: CHAP authentication succeeded
May 23 14:12:49 antiX12base kernel: [   99.272720] PPP BSD Compression module registered
May 23 14:12:49 antiX12base kernel: [   99.319239] PPP Deflate Compression module registered
May 23 14:12:54 antiX12base pppd[2386]: Could not determine remote IP address: defaulting to 10.64.64.64
May 23 14:12:54 antiX12base pppd[2386]: local  IP address 84.224.70.135
May 23 14:12:54 antiX12base pppd[2386]: remote IP address 10.64.64.64
May 23 14:12:54 antiX12base pppd[2386]: primary   DNS address 217.79.128.45
May 23 14:12:54 antiX12base pppd[2386]: secondary DNS address 217.79.128.40
May 23 14:37:02 antiX12base -- MARK --
_______________________________________________
networkmanager-list mailing list
networkmanager-list&amp;lt; at &amp;gt;gnome.org
https://mail.gnome.org/mailman/listinfo/networkmanager-list
&lt;/pre&gt;</description>
    <dc:creator>PongráczI</dc:creator>
    <dc:date>2012-05-23T13:07:23</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21213">
    <title>[PATCH 6/6] bridge: nmcli support</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21213</link>
    <description>&lt;pre&gt;---
 cli/src/connections.c |   17 +++++++++++++++--
 cli/src/devices.c     |    5 +++++
 cli/src/settings.c    |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 cli/src/settings.h    |    2 ++
 4 files changed, 70 insertions(+), 2 deletions(-)

diff --git a/cli/src/connections.c b/cli/src/connections.c
index 2b4eb01..1c6fe53 100644
--- a/cli/src/connections.c
+++ b/cli/src/connections.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -43,6 +43,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;nm-device-olpc-mesh.h&amp;gt;
 #include &amp;lt;nm-device-infiniband.h&amp;gt;
 #include &amp;lt;nm-device-bond.h&amp;gt;
+#include &amp;lt;nm-device-bridge.h&amp;gt;
 #include &amp;lt;nm-device-vlan.h&amp;gt;
 #include &amp;lt;nm-remote-settings.h&amp;gt;
 #include &amp;lt;nm-vpn-connection.h&amp;gt;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -94,6 +95,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static NmcOutputField nmc_fields_settings_names[] = {
 SETTING_FIELD (NM_SETTING_BOND_SETTING_NAME, 0),                  /* 17 */
 SETTING_FIELD (NM_SETTING_VLAN_SETTING_NAME, 0),                  /* 18 */
 SETTING_FIELD (NM_SETTING_ADSL_SETTING_NAME, 0),                  /* 19 */
+SETTING_FIELD (NM_SETTING_BRIDGE_SETTING_NAME, 0),                /* 20 */
 {NULL, NULL, 0, NULL, 0}
 };
 #define NMC_FIELDS_SETTINGS_NAMES_ALL_X  NM_SETTING_CONNECTION_SETTING_NAME","\
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -114,7 +116,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static NmcOutputField nmc_fields_settings_names[] = {
                                          NM_SETTING_VPN_SETTING_NAME","\
                                          NM_SETTING_INFINIBAND_SETTING_NAME","\
                                          NM_SETTING_BOND_SETTING_NAME","\
-                                         NM_SETTING_VLAN_SETTING_NAME
+                                         NM_SETTING_VLAN_SETTING_NAME","\
+                                         NM_SETTING_BRIDGE_SETTING_NAME
 #if WITH_WIMAX
 #define NMC_FIELDS_SETTINGS_NAMES_ALL    NMC_FIELDS_SETTINGS_NAMES_ALL_X","\
                                          NM_SETTING_WIMAX_SETTING_NAME
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -450,6 +453,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nmc_connection_detail (NMConnection *connection, NmCli *nmc)
 continue;
 }
 }
+
+if (!strcasecmp (nmc_fields_settings_names[section_idx].name, nmc_fields_settings_names[20].name)) {
+NMSettingBridge *s_bridge = nm_connection_get_setting_bridge (connection);
+if (s_bridge) {
+setting_bridge_details (s_bridge, nmc);
+was_output = TRUE;
+continue;
+}
+}
 }
 
 if (print_settings_array)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1731,7 +1743,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; do_connection_up (NmCli *nmc, int argc, char **argv)
 con_type = nm_setting_connection_get_connection_type (s_con);
 
 if (   nm_connection_is_type (connection, NM_SETTING_BOND_SETTING_NAME)
-    || nm_connection_is_type (connection, NM_SETTING_VLAN_SETTING_NAME))
+    || nm_connection_is_type (connection, NM_SETTING_VLAN_SETTING_NAME)
+    || nm_connection_is_type (connection, NM_SETTING_BRIDGE_SETTING_NAME))
 is_virtual = TRUE;
 
 device_found = find_device_for_connection (nmc, connection, iface, ap, nsp, &amp;amp;device, &amp;amp;spec_object, &amp;amp;error);
diff --git a/cli/src/devices.c b/cli/src/devices.c
index 4d5c79e..25f3ff9 100644
--- a/cli/src/devices.c
+++ b/cli/src/devices.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -41,6 +41,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #endif
 #include &amp;lt;nm-device-infiniband.h&amp;gt;
 #include &amp;lt;nm-device-bond.h&amp;gt;
+#include &amp;lt;nm-device-bridge.h&amp;gt;
 #include &amp;lt;nm-device-vlan.h&amp;gt;
 #include &amp;lt;nm-utils.h&amp;gt;
 #include &amp;lt;nm-setting-ip4-config.h&amp;gt;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -283,6 +284,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; device_type_to_string (NMDevice *device)
 return NM_SETTING_BOND_SETTING_NAME;
 case NM_DEVICE_TYPE_VLAN:
 return NM_SETTING_VLAN_SETTING_NAME;
+case NM_DEVICE_TYPE_BRIDGE:
+return NM_SETTING_BRIDGE_SETTING_NAME;
 default:
 return _("Unknown");
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -564,6 +567,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; show_device_info (gpointer data, gpointer user_data)
 hwaddr = nm_device_bond_get_hw_address (NM_DEVICE_BOND (device));
 else if (NM_IS_DEVICE_VLAN (device))
 hwaddr = nm_device_vlan_get_hw_address (NM_DEVICE_VLAN (device));
+else if (NM_IS_DEVICE_BRIDGE (device))
+hwaddr = nm_device_bridge_get_hw_address (NM_DEVICE_BRIDGE (device));
 
 state_str = g_strdup_printf ("%d (%s)", state, nmc_device_state_to_string (state));
 reason_str = g_strdup_printf ("%d (%s)", reason, nmc_device_reason_to_string (reason));
diff --git a/cli/src/settings.c b/cli/src/settings.c
index 13d76e1..351a00d 100644
--- a/cli/src/settings.c
+++ b/cli/src/settings.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -508,6 +508,18 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static NmcOutputField nmc_fields_setting_vlan[] = {
                                         NM_SETTING_VLAN_EGRESS_PRIORITY_MAP
 #define NMC_FIELDS_SETTING_VLAN_COMMON  NMC_FIELDS_SETTING_VLAN_ALL
 
+/* Available fields for NM_SETTING_BRIDGE_SETTING_NAME */
+static NmcOutputField nmc_fields_setting_bridge[] = {
+SETTING_FIELD ("name",  8),                                        /* 0 */
+SETTING_FIELD (NM_SETTING_BRIDGE_INTERFACE_NAME, 15),              /* 1 */
+SETTING_FIELD (NM_SETTING_BRIDGE_OPTIONS, 30),                     /* 2 */
+{NULL, NULL, 0, NULL, 0}
+};
+#define NMC_FIELDS_SETTING_BRIDGE_ALL    "name"","\
+                                         NM_SETTING_BRIDGE_INTERFACE_NAME","\
+                                         NM_SETTING_BRIDGE_OPTIONS
+#define NMC_FIELDS_SETTING_BRIDGE_COMMON NMC_FIELDS_SETTING_BRIDGE_ALL
+
 
 static char *
 wep_key_type_to_string (NMWepKeyType type)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1764,3 +1776,39 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; setting_adsl_details (NMSettingAdsl *s_adsl, NmCli *nmc)
 return TRUE;
 }
 
+gboolean
+setting_bridge_details (NMSettingBridge *s_bridge, NmCli *nmc)
+{
+GString *bridge_options_s;
+int i;
+guint32 mode_flag = (nmc-&amp;gt;print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc-&amp;gt;print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0;
+guint32 multiline_flag = nmc-&amp;gt;multiline_output ? NMC_PF_FLAG_MULTILINE : 0;
+guint32 escape_flag = nmc-&amp;gt;escape_values ? NMC_PF_FLAG_ESCAPE : 0;
+
+g_return_val_if_fail (NM_IS_SETTING_BRIDGE (s_bridge), FALSE);
+
+nmc-&amp;gt;allowed_fields = nmc_fields_setting_bridge;
+nmc-&amp;gt;print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_BRIDGE_ALL, nmc-&amp;gt;allowed_fields, NULL);
+nmc-&amp;gt;print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES;
+print_fields (nmc-&amp;gt;print_fields, nmc-&amp;gt;allowed_fields);  /* Print field names */
+
+bridge_options_s = g_string_new (NULL);
+for (i = 0; i &amp;lt; nm_setting_bridge_get_num_options (s_bridge); i++) {
+const char *key, *value;
+
+nm_setting_bridge_get_option (s_bridge, i, &amp;amp;key, &amp;amp;value);
+g_string_append_printf (bridge_options_s, "%s=%s,", key, value);
+}
+g_string_truncate (bridge_options_s, bridge_options_s-&amp;gt;len-1);  /* chop off trailing ',' */
+
+nmc-&amp;gt;allowed_fields[0].value = NM_SETTING_BRIDGE_SETTING_NAME;
+nmc-&amp;gt;allowed_fields[1].value = nm_setting_bridge_get_interface_name (s_bridge);
+nmc-&amp;gt;allowed_fields[2].value = bridge_options_s-&amp;gt;str;
+
+nmc-&amp;gt;print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX;
+print_fields (nmc-&amp;gt;print_fields, nmc-&amp;gt;allowed_fields); /* Print values */
+
+g_string_free (bridge_options_s, TRUE);
+
+return TRUE;
+}
diff --git a/cli/src/settings.h b/cli/src/settings.h
index 3309bd0..41abe76 100644
--- a/cli/src/settings.h
+++ b/cli/src/settings.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -39,6 +39,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;nm-setting-wimax.h&amp;gt;
 #include &amp;lt;nm-setting-infiniband.h&amp;gt;
 #include &amp;lt;nm-setting-bond.h&amp;gt;
+#include &amp;lt;nm-setting-bridge.h&amp;gt;
 #include &amp;lt;nm-setting-vlan.h&amp;gt;
 
 #include "nmcli.h"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -65,5 +66,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean setting_infiniband_details (NMSettingInfiniband *s_infiniband, NmCli *n
 gboolean setting_bond_details (NMSettingBond *s_bond, NmCli *nmc);
 gboolean setting_vlan_details (NMSettingVlan *s_vlan, NmCli *nmc);
 gboolean setting_adsl_details (NMSettingAdsl *s_adsl, NmCli *nmc);
+gboolean setting_bridge_details (NMSettingBridge *s_bridge, NmCli *nmc);
 
 #endif /* NMC_SETTINGS_H */
&lt;/pre&gt;</description>
    <dc:creator>Thomas Graf</dc:creator>
    <dc:date>2012-05-23T14:19:30</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21212">
    <title>[PATCH 2/6] bridge: API to to create, delete, attach,and detach bridges</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21212</link>
    <description>&lt;pre&gt;Provides functions to create and delete bridging devices and
to attach/detach slaves from bridging devices.

It currently relies on the ioctl() kernel interface. The long
term goal is to use the netlink interface for this.
---
 src/nm-system.c |  247 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 src/nm-system.h |   13 +++
 2 files changed, 259 insertions(+), 1 deletions(-)

diff --git a/src/nm-system.c b/src/nm-system.c
index 6a35997..a0e7275 100644
--- a/src/nm-system.c
+++ b/src/nm-system.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -15,7 +15,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Copyright (C) 2004 - 2010 Red Hat, Inc.
+ * Copyright (C) 2004 - 2012 Red Hat, Inc.
  * Copyright (C) 2005 - 2008 Novell, Inc.
  * Copyright (C) 1996 - 1997 Yoichi Hariguchi &amp;lt;yoichi&amp;lt; at &amp;gt;fore.com&amp;gt;
  * Copyright (C) January, 1998 Sergei Viznyuk &amp;lt;sv&amp;lt; at &amp;gt;phystech.com&amp;gt;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -44,6 +44,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;linux/if.h&amp;gt;
 #include &amp;lt;linux/sockios.h&amp;gt;
 #include &amp;lt;linux/if_bonding.h&amp;gt;
+#include &amp;lt;linux/if_bridge.h&amp;gt;
 
 #include "nm-system.h"
 #include "nm-device.h"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1614,6 +1615,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nm_system_get_iface_type (int ifindex, const char *name)
 res = NM_IFACE_TYPE_BOND;
 else if (!g_strcmp0 (type, "vlan"))
 res = NM_IFACE_TYPE_VLAN;
+else if (!g_strcmp0 (type, "bridge"))
+res = NM_IFACE_TYPE_BRIDGE;
 else if (!g_strcmp0 (type, "dummy"))
 res = NM_IFACE_TYPE_DUMMY;
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2021,3 +2024,245 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nm_system_del_vlan_iface (const char *iface)
 nl_cache_free (cache);
 return (ret == 0) ? TRUE : FALSE;
 }
+
+static int
+nm_system_create_bridge_compat (const char *iface)
+{
+int ret, fd;
+
+if ((fd = socket (AF_LOCAL, SOCK_STREAM, 0)) &amp;lt; 0) {
+nm_log_err (LOGD_DEVICE, "couldn't open control socket.");
+return FALSE;
+}
+
+#ifdef SIOCBRADDBR
+ret = ioctl(fd, SIOCBRADDBR, iface);
+if (ret &amp;lt; 0 &amp;amp;&amp;amp; errno != -EEXIST)
+#endif
+{
+char _br[IFNAMSIZ];
+unsigned long arg[3] = { BRCTL_ADD_BRIDGE, (unsigned long) _br };
+
+strncpy(_br, iface, IFNAMSIZ);
+ret = ioctl(fd, SIOCSIFBR, arg);
+}
+
+close (fd);
+
+return ret &amp;lt; 0 ? errno : 0;
+}
+
+/**
+ * nm_system_create_bridge:
+ * &amp;lt; at &amp;gt;iface: Name bridging device to create
+ *
+ * Creates a new bridging device in the kernel. If a bridging device with
+ * the specified name already exists, it is being reused.
+ *
+ * Returns: %TRUE on success, %FALSE on error.
+ */
+gboolean
+nm_system_create_bridge (const char *iface)
+{
+int err;
+
+// FIXME: long term plan is to use netlink for this
+
+err = nm_system_create_bridge_compat (iface);
+if (err == -EEXIST) {
+/* Reuse existing bridging devices */
+return TRUE;
+}
+
+if (err &amp;lt; 0) {
+nm_log_err (LOGD_DEVICE, "(%s): error while adding bridge: %s ",
+            iface, strerror(err));
+return FALSE;
+}
+
+return TRUE;
+}
+
+static int
+nm_system_del_bridge_compat (const char *iface)
+{
+int ret, fd;
+
+if ((fd = socket (AF_LOCAL, SOCK_STREAM, 0)) &amp;lt; 0) {
+nm_log_err (LOGD_DEVICE, "couldn't open control socket.");
+return FALSE;
+}
+
+#ifdef SIOCBRDELBR
+ret = ioctl(fd, SIOCBRDELBR, iface);
+if (ret &amp;lt; 0)
+#endif
+{
+char _br[IFNAMSIZ];
+unsigned long arg[3]
+= { BRCTL_DEL_BRIDGE, (unsigned long) _br };
+
+strncpy(_br, iface, IFNAMSIZ);
+ret = ioctl(fd, SIOCSIFBR, arg);
+}
+
+close (fd);
+
+return ret &amp;lt; 0 ? errno : 0;
+}
+
+/**
+ * nm_system_del_bridge:
+ * &amp;lt; at &amp;gt;iface: Name of bridging device to delete
+ *
+ * Deletes the specified bridging device in the kernel.
+ *
+ * Returns: %TRUE on success, %FALSE on error.
+ */
+gboolean
+nm_system_del_bridge (const char *iface)
+{
+int err;
+
+// FIXME: long term plan is to use netlink for this
+
+err = nm_system_del_bridge_compat (iface);
+if (err &amp;lt; 0) {
+nm_log_err (LOGD_DEVICE, "(%s): error while deleting bridge: %s ",
+            iface, strerror(err));
+return FALSE;
+}
+
+return TRUE;
+}
+
+static int
+nm_system_bridge_attach_compat (gint master_ifindex,
+                                const char *master_iface,
+                                gint slave_ifindex,
+                                const char *slave_iface)
+{
+int ret, fd;
+struct ifreq ifr;
+
+memset (&amp;amp;ifr, 0, sizeof(ifr));
+
+if ((fd = socket (AF_LOCAL, SOCK_STREAM, 0)) &amp;lt; 0) {
+nm_log_err (LOGD_DEVICE, "couldn't open control socket.");
+return FALSE;
+}
+
+strncpy(ifr.ifr_name, master_iface, IFNAMSIZ);
+
+#ifdef SIOCBRADDIF
+ifr.ifr_ifindex = slave_ifindex;
+ret = ioctl(fd, SIOCBRADDIF, &amp;amp;ifr);
+if (ret &amp;lt; 0)
+#endif
+{
+unsigned long args[4] = { BRCTL_ADD_IF, slave_ifindex, 0, 0 };
+
+ifr.ifr_data = (char *) args;
+ret = ioctl(fd, SIOCDEVPRIVATE, &amp;amp;ifr);
+}
+
+close (fd);
+
+return ret &amp;lt; 0 ? errno : 0;
+}
+
+static int
+nm_system_bridge_detach_compat (gint master_ifindex,
+                                const char *master_iface,
+                                gint slave_ifindex,
+                                const char *slave_iface)
+{
+int ret, fd;
+struct ifreq ifr;
+
+if ((fd = socket (AF_LOCAL, SOCK_STREAM, 0)) &amp;lt; 0) {
+nm_log_err (LOGD_DEVICE, "couldn't open control socket.");
+return FALSE;
+}
+
+memset (&amp;amp;ifr, 0, sizeof(ifr));
+strncpy(ifr.ifr_name, master_iface, IFNAMSIZ);
+
+#ifdef SIOCBRDELIF
+ifr.ifr_ifindex = slave_ifindex;
+ret = ioctl(fd, SIOCBRDELIF, &amp;amp;ifr);
+if (ret &amp;lt; 0)
+#endif
+{
+unsigned long args[4] = { BRCTL_DEL_IF, slave_ifindex, 0, 0 };
+
+ifr.ifr_data = (char *) args;
+ret = ioctl(fd, SIOCDEVPRIVATE, &amp;amp;ifr);
+}
+
+close (fd);
+
+return ret &amp;lt; 0 ? errno : 0;
+}
+
+/**
+ * nm_system_bridge_attach:
+ * &amp;lt; at &amp;gt;master_ifindex: master device interface index
+ * &amp;lt; at &amp;gt;master_iface: master device interface name
+ * &amp;lt; at &amp;gt;slave_ifindex: slave device interface index
+ * &amp;lt; at &amp;gt;slave_iface: slave device interface name
+ *
+ * Attaches interface 'slave' to bridge 'master'
+ *
+ * Returns: %TRUE on success, or %FALSE
+ */
+gboolean
+nm_system_bridge_attach (gint master_ifindex,
+                         const char *master_iface,
+                         gint slave_ifindex,
+                         const char *slave_iface)
+{
+g_return_val_if_fail (master_ifindex &amp;gt;= 0, FALSE);
+g_return_val_if_fail (master_iface != NULL, FALSE);
+g_return_val_if_fail (slave_ifindex &amp;gt;= 0, FALSE);
+g_return_val_if_fail (slave_iface != NULL, FALSE);
+
+if (nm_system_iface_get_flags (slave_ifindex) &amp;amp; IFF_SLAVE) {
+nm_log_err (LOGD_DEVICE, "(%s): %s is already a slave",
+            master_iface, slave_iface);
+return FALSE;
+}
+
+// FIXME: long term plan is to use netlink for this
+
+return !!nm_system_bridge_attach_compat (master_ifindex, master_iface,
+                                         slave_ifindex, slave_iface);
+}
+
+/**
+ * nm_system_bridge_detach:
+ * &amp;lt; at &amp;gt;master_ifindex: master device interface index
+ * &amp;lt; at &amp;gt;master_iface: master device interface name
+ * &amp;lt; at &amp;gt;slave_ifindex: slave device interface index
+ * &amp;lt; at &amp;gt;slave_iface: slave device interface name
+ *
+ * Detaches the interface 'slave' from the bridge 'master'.
+ *
+ * Returns: %TRUE on success, or %FALSE
+ */
+gboolean
+nm_system_bridge_detach (gint master_ifindex,
+                         const char *master_iface,
+                         gint slave_ifindex,
+                         const char *slave_iface)
+{
+g_return_val_if_fail (master_ifindex &amp;gt;= 0, FALSE);
+g_return_val_if_fail (master_iface != NULL, FALSE);
+g_return_val_if_fail (slave_ifindex &amp;gt;= 0, FALSE);
+g_return_val_if_fail (slave_iface != NULL, FALSE);
+
+// FIXME: long term plan is to use netlink for this
+
+return !!nm_system_bridge_detach_compat (master_ifindex, master_iface,
+                                         slave_ifindex, slave_iface);
+}
diff --git a/src/nm-system.h b/src/nm-system.h
index 84ae6c2..859265b 100644
--- a/src/nm-system.h
+++ b/src/nm-system.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -107,6 +107,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; enum {
 NM_IFACE_TYPE_BOND,
 NM_IFACE_TYPE_VLAN,
 NM_IFACE_TYPE_DUMMY,
+NM_IFACE_TYPE_BRIDGE,
 };
 
 int             nm_system_get_iface_type      (int ifindex, const char *name);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -120,4 +121,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gboolean        nm_system_add_vlan_iface (NMConnection *connection,
                                           int parent_ifindex);
 gboolean        nm_system_del_vlan_iface (const char *iface);
 
+gboolean        nm_system_create_bridge (const char *iface);
+gboolean        nm_system_del_bridge (const char *iface);
+
+gboolean        nm_system_bridge_attach (gint master_ifindex,
+                                         const char *master_iface,
+                                         gint slave_ifindex,
+                                         const char *slave_iface);
+gboolean        nm_system_bridge_detach (gint master_ifindex,
+                                         const char *master_iface,
+                                         gint slave_ifindex,
+                                         const char *slave_iface);
+
 #endif
&lt;/pre&gt;</description>
    <dc:creator>Thomas Graf</dc:creator>
    <dc:date>2012-05-23T14:19:26</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21211">
    <title>[PATCH 5/6] bridge: add bridge device type</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21211</link>
    <description>&lt;pre&gt;This adds a new device type 'bridge'. Kernel devices are created
on demand.
---
 docs/libnm-glib/libnm-glib-docs.xml |    1 +
 docs/libnm-glib/libnm-glib.types    |    2 +
 include/NetworkManager.h            |    4 +
 introspection/Makefile.am           |    1 +
 introspection/all.xml.in            |    1 +
 introspection/nm-device-bridge.xml  |   27 ++
 introspection/nm-device.xml         |    5 +
 libnm-glib/Makefile.am              |    2 +
 libnm-glib/libnm-glib.ver           |    6 +
 libnm-glib/nm-device-bridge.c       |  301 +++++++++++++++++++
 libnm-glib/nm-device-bridge.h       |   82 +++++
 libnm-glib/nm-device.c              |    3 +
 src/Makefile.am                     |    6 +
 src/nm-device-bridge.c              |  560 +++++++++++++++++++++++++++++++++++
 src/nm-device-bridge.h              |   65 ++++
 src/nm-device-wired.c               |    3 +
 src/nm-manager.c                    |   28 ++-
 src/nm-udev-manager.c               |    3 +
 18 files changed, 1097 insertions(+), 3 deletions(-)
 create mode 100644 introspection/nm-device-bridge.xml
 create mode 100644 libnm-glib/nm-device-bridge.c
 create mode 100644 libnm-glib/nm-device-bridge.h
 create mode 100644 src/nm-device-bridge.c
 create mode 100644 src/nm-device-bridge.h

diff --git a/docs/libnm-glib/libnm-glib-docs.xml b/docs/libnm-glib/libnm-glib-docs.xml
index 7f855aa..0f8dc3a 100644
--- a/docs/libnm-glib/libnm-glib-docs.xml
+++ b/docs/libnm-glib/libnm-glib-docs.xml
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -89,6 +89,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
     &amp;lt;xi:include href="xml/nm-device-bt.xml"/&amp;gt;
     &amp;lt;xi:include href="xml/nm-device-wimax.xml"/&amp;gt;
     &amp;lt;xi:include href="xml/nm-device-bond.xml"/&amp;gt;
+    &amp;lt;xi:include href="xml/nm-device-bridge.xml"/&amp;gt;
     &amp;lt;xi:include href="xml/nm-device-infiniband.xml"/&amp;gt;
     &amp;lt;xi:include href="xml/nm-device-vlan.xml"/&amp;gt;
     &amp;lt;xi:include href="xml/nm-device-olpc-mesh.xml"/&amp;gt;
diff --git a/docs/libnm-glib/libnm-glib.types b/docs/libnm-glib/libnm-glib.types
index 9f6419d..746bc8c 100644
--- a/docs/libnm-glib/libnm-glib.types
+++ b/docs/libnm-glib/libnm-glib.types
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -9,6 +9,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;nm-device-olpc-mesh.h&amp;gt;
 #include &amp;lt;nm-device-infiniband.h&amp;gt;
 #include &amp;lt;nm-device-bond.h&amp;gt;
+#include &amp;lt;nm-device-bridge.h&amp;gt;
 #include &amp;lt;nm-device-vlan.h&amp;gt;
 #include &amp;lt;nm-access-point.h&amp;gt;
 #include &amp;lt;nm-ip4-config.h&amp;gt;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -32,6 +33,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nm_device_wimax_get_type
 nm_device_olpc_mesh_get_type
 nm_device_infiniband_get_type
 nm_device_bond_get_type
+nm_device_bridge_get_type
 nm_device_vlan_get_type
 nm_wimax_nsp_get_type
 nm_access_point_get_type
diff --git a/include/NetworkManager.h b/include/NetworkManager.h
index 96b132e..954c928 100644
--- a/include/NetworkManager.h
+++ b/include/NetworkManager.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -52,6 +52,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #define NM_DBUS_INTERFACE_DEVICE_INFINIBAND NM_DBUS_INTERFACE_DEVICE ".Infiniband"
 #define NM_DBUS_INTERFACE_DEVICE_BOND       NM_DBUS_INTERFACE_DEVICE ".Bond"
 #define NM_DBUS_INTERFACE_DEVICE_VLAN       NM_DBUS_INTERFACE_DEVICE ".Vlan"
+#define NM_DBUS_INTERFACE_DEVICE_BRIDGE     NM_DBUS_INTERFACE_DEVICE ".Bridge"
 
 
 #define NM_DBUS_IFACE_SETTINGS            "org.freedesktop.NetworkManager.Settings"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -108,7 +109,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; typedef enum {
  * GSM/UMTS, or LTE network access protocols
  * &amp;lt; at &amp;gt;NM_DEVICE_TYPE_INFINIBAND: an IP-over-InfiniBand device
  * &amp;lt; at &amp;gt;NM_DEVICE_TYPE_BOND: a bond master interface
+ * &amp;lt; at &amp;gt;NM_DEVICE_TYPE_VLAN: a vlan interface
  * &amp;lt; at &amp;gt;NM_DEVICE_TYPE_ADSL: ADSL modem
+ * &amp;lt; at &amp;gt;NM_DEVICE_TYPE_BRIDGE: a bridge interface
  *
  * #NMDeviceType values indicate the type of hardware represented by
  * an #NMDevice.
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -127,6 +130,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; typedef enum {
 NM_DEVICE_TYPE_BOND       = 10,
 NM_DEVICE_TYPE_VLAN       = 11,
 NM_DEVICE_TYPE_ADSL       = 12,
+NM_DEVICE_TYPE_BRIDGE     = 13,
 } NMDeviceType;
 
 /**
diff --git a/introspection/Makefile.am b/introspection/Makefile.am
index a267b51..3850a23 100644
--- a/introspection/Makefile.am
+++ b/introspection/Makefile.am
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -13,6 +13,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; EXTRA_DIST = \
 nm-device-wimax.xml \
 nm-device-infiniband.xml \
 nm-device-bond.xml \
+nm-device-bridge.xml \
 nm-device-vlan.xml \
 nm-device.xml \
 nm-ip4-config.xml \
diff --git a/introspection/all.xml.in b/introspection/all.xml.in
index e9e7b0e..a8cea61 100644
--- a/introspection/all.xml.in
+++ b/introspection/all.xml.in
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -36,6 +36,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.&amp;lt;/
 &amp;lt;xi:include href="nm-device-wimax.xml"/&amp;gt;
 &amp;lt;xi:include href="nm-device-infiniband.xml"/&amp;gt;
 &amp;lt;xi:include href="nm-device-bond.xml"/&amp;gt;
+&amp;lt;xi:include href="nm-device-bridge.xml"/&amp;gt;
 &amp;lt;xi:include href="nm-device-vlan.xml"/&amp;gt;
 &amp;lt;xi:include href="nm-device-adsl.xml"/&amp;gt;
 &amp;lt;xi:include href="nm-wimax-nsp.xml"/&amp;gt;
diff --git a/introspection/nm-device-bridge.xml b/introspection/nm-device-bridge.xml
new file mode 100644
index 0000000..67ce419
--- /dev/null
+++ b/introspection/nm-device-bridge.xml
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,27 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;
+
+&amp;lt;node name="/" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"&amp;gt;
+  &amp;lt;interface name="org.freedesktop.NetworkManager.Device.Bridge"&amp;gt;
+
+    &amp;lt;property name="HwAddress" type="s" access="read"&amp;gt;
+      &amp;lt;tp:docstring&amp;gt;
+        Hardware address of the device.
+      &amp;lt;/tp:docstring&amp;gt;
+    &amp;lt;/property&amp;gt;
+
+    &amp;lt;property name="Carrier" type="b" access="read"&amp;gt;
+      &amp;lt;tp:docstring&amp;gt;
+        Indicates whether the physical carrier is found (e.g. whether a cable is plugged in or not).
+      &amp;lt;/tp:docstring&amp;gt;
+    &amp;lt;/property&amp;gt;
+
+    &amp;lt;signal name="PropertiesChanged"&amp;gt;
+        &amp;lt;arg name="properties" type="a{sv}" tp:type="String_Variant_Map"&amp;gt;
+            &amp;lt;tp:docstring&amp;gt;
+                A dictionary mapping property names to variant boxed values
+            &amp;lt;/tp:docstring&amp;gt;
+        &amp;lt;/arg&amp;gt;
+    &amp;lt;/signal&amp;gt;
+
+  &amp;lt;/interface&amp;gt;
+&amp;lt;/node&amp;gt;
diff --git a/introspection/nm-device.xml b/introspection/nm-device.xml
index 2161bc4..d823c16 100644
--- a/introspection/nm-device.xml
+++ b/introspection/nm-device.xml
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -256,6 +256,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
           The device is a VLAN interface.
         &amp;lt;/tp:docstring&amp;gt;
       &amp;lt;/tp:enumvalue&amp;gt;
+      &amp;lt;tp:enumvalue suffix="BRIDGE" value="13"&amp;gt;
+        &amp;lt;tp:docstring&amp;gt;
+          The device is a bridge interface.
+        &amp;lt;/tp:docstring&amp;gt;
+      &amp;lt;/tp:enumvalue&amp;gt;
     &amp;lt;/tp:enum&amp;gt;
 
     &amp;lt;tp:flags name="NM_DEVICE_CAP" value-prefix="NM_DEVICE_CAP" type="u"&amp;gt;
diff --git a/libnm-glib/Makefile.am b/libnm-glib/Makefile.am
index b5f8b16..8d4872d 100644
--- a/libnm-glib/Makefile.am
+++ b/libnm-glib/Makefile.am
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -64,6 +64,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libnminclude_HEADERS = \
 nm-device-bt.h \
 nm-device-olpc-mesh.h \
 nm-device-bond.h \
+nm-device-bridge.h \
 nm-device-vlan.h \
 nm-access-point.h \
 nm-ip4-config.h \
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -98,6 +99,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libnm_glib_la_csources = \
 nm-device-bt.c \
 nm-device-olpc-mesh.c \
 nm-device-bond.c \
+nm-device-bridge.c \
 nm-device-vlan.c \
 nm-access-point.c \
 nm-ip4-config.c \
diff --git a/libnm-glib/libnm-glib.ver b/libnm-glib/libnm-glib.ver
index 7de80c7..efea678 100644
--- a/libnm-glib/libnm-glib.ver
+++ b/libnm-glib/libnm-glib.ver
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -69,6 +69,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; global:
 nm_device_bond_get_hw_address;
 nm_device_bond_get_type;
 nm_device_bond_new;
+nm_device_bridge_error_get_type;
+nm_device_bridge_error_quark;
+nm_device_bridge_get_carrier;
+nm_device_bridge_get_hw_address;
+nm_device_bridge_get_type;
+nm_device_bridge_new;
 nm_device_bt_error_get_type;
 nm_device_bt_error_quark;
 nm_device_bt_get_capabilities;
diff --git a/libnm-glib/nm-device-bridge.c b/libnm-glib/nm-device-bridge.c
new file mode 100644
index 0000000..63a436f
--- /dev/null
+++ b/libnm-glib/nm-device-bridge.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,301 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/*
+ * libnm_glib -- Access network status &amp;amp; information from glib applications
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ */
+
+#include &amp;lt;config.h&amp;gt;
+#include &amp;lt;string.h&amp;gt;
+#include &amp;lt;netinet/ether.h&amp;gt;
+
+#include "nm-glib-compat.h"
+
+#include &amp;lt;nm-setting-connection.h&amp;gt;
+#include &amp;lt;nm-setting-bridge.h&amp;gt;
+#include &amp;lt;nm-utils.h&amp;gt;
+
+#include "nm-device-bridge.h"
+#include "nm-device-private.h"
+#include "nm-object-private.h"
+
+G_DEFINE_TYPE (NMDeviceBridge, nm_device_bridge, NM_TYPE_DEVICE)
+
+#define NM_DEVICE_BRIDGE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_BRIDGE, NMDeviceBridgePrivate))
+
+typedef struct {
+DBusGProxy *proxy;
+
+char *hw_address;
+gboolean carrier;
+} NMDeviceBridgePrivate;
+
+enum {
+PROP_0,
+PROP_HW_ADDRESS,
+PROP_CARRIER,
+
+LAST_PROP
+};
+
+#define DBUS_PROP_HW_ADDRESS "HwAddress"
+#define DBUS_PROP_CARRIER "Carrier"
+
+/**
+ * nm_device_bridge_error_quark:
+ *
+ * Registers an error quark for #NMDeviceBridge if necessary.
+ *
+ * Returns: the error quark used for #NMDeviceBridge errors.
+ **/
+GQuark
+nm_device_bridge_error_quark (void)
+{
+static GQuark quark = 0;
+
+if (G_UNLIKELY (quark == 0))
+quark = g_quark_from_static_string ("nm-device-bridge-error-quark");
+return quark;
+}
+
+/**
+ * nm_device_bridge_new:
+ * &amp;lt; at &amp;gt;connection: the #DBusGConnection
+ * &amp;lt; at &amp;gt;path: the DBus object path of the device
+ *
+ * Creates a new #NMDeviceBridge.
+ *
+ * Returns: (transfer full): a new device
+ **/
+GObject *
+nm_device_bridge_new (DBusGConnection *connection, const char *path)
+{
+GObject *device;
+
+g_return_val_if_fail (connection != NULL, NULL);
+g_return_val_if_fail (path != NULL, NULL);
+
+device = g_object_new (NM_TYPE_DEVICE_BRIDGE,
+       NM_OBJECT_DBUS_CONNECTION, connection,
+       NM_OBJECT_DBUS_PATH, path,
+       NULL);
+_nm_object_ensure_inited (NM_OBJECT (device));
+return device;
+}
+
+/**
+ * nm_device_bridge_get_hw_address:
+ * &amp;lt; at &amp;gt;device: a #NMDeviceBridge
+ *
+ * Gets the hardware (MAC) address of the #NMDeviceBridge
+ *
+ * Returns: the hardware address. This is the internal string used by the
+ * device, and must not be modified.
+ **/
+const char *
+nm_device_bridge_get_hw_address (NMDeviceBridge *device)
+{
+g_return_val_if_fail (NM_IS_DEVICE_BRIDGE (device), NULL);
+
+_nm_object_ensure_inited (NM_OBJECT (device));
+return NM_DEVICE_BRIDGE_GET_PRIVATE (device)-&amp;gt;hw_address;
+}
+
+/**
+ * nm_device_bridge_get_carrier:
+ * &amp;lt; at &amp;gt;device: a #NMDeviceBridge
+ *
+ * Whether the device has carrier.
+ *
+ * Returns: %TRUE if the device has carrier
+ **/
+gboolean
+nm_device_bridge_get_carrier (NMDeviceBridge *device)
+{
+g_return_val_if_fail (NM_IS_DEVICE_BRIDGE (device), FALSE);
+
+_nm_object_ensure_inited (NM_OBJECT (device));
+return NM_DEVICE_BRIDGE_GET_PRIVATE (device)-&amp;gt;carrier;
+}
+
+static gboolean
+connection_compatible (NMDevice *device, NMConnection *connection, GError **error)
+{
+NMSettingConnection *s_con;
+NMSettingBridge *s_bridge;
+const char *ctype, *dev_iface_name, *bridge_iface_name;
+
+g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+s_con = nm_connection_get_setting_connection (connection);
+g_assert (s_con);
+
+ctype = nm_setting_connection_get_connection_type (s_con);
+if (strcmp (ctype, NM_SETTING_BRIDGE_SETTING_NAME) != 0) {
+g_set_error (error, NM_DEVICE_BRIDGE_ERROR, NM_DEVICE_BRIDGE_ERROR_NOT_BRIDGE_CONNECTION,
+             "The connection was not a bridge connection.");
+return FALSE;
+}
+
+s_bridge = nm_connection_get_setting_bridge (connection);
+if (!s_bridge) {
+g_set_error (error, NM_DEVICE_BRIDGE_ERROR, NM_DEVICE_BRIDGE_ERROR_INVALID_BRIDGE_CONNECTION,
+             "The connection was not a valid bridge connection.");
+return FALSE;
+}
+
+dev_iface_name = nm_device_get_iface (device);
+bridge_iface_name = nm_setting_bridge_get_interface_name (s_bridge);
+if (g_strcmp0 (dev_iface_name, bridge_iface_name) != 0) {
+g_set_error (error, NM_DEVICE_BRIDGE_ERROR, NM_DEVICE_BRIDGE_ERROR_INTERFACE_MISMATCH,
+             "The interfaces of the device and the connection didn't match.");
+return FALSE;
+}
+
+/* FIXME: check slaves? But we can't... */
+
+return TRUE;
+}
+
+/***********************************************************/
+
+static void
+nm_device_bridge_init (NMDeviceBridge *device)
+{
+_nm_device_set_device_type (NM_DEVICE (device), NM_DEVICE_TYPE_BRIDGE);
+}
+
+static void
+register_properties (NMDeviceBridge *device)
+{
+NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (device);
+const NMPropertiesInfo property_info[] = {
+{ NM_DEVICE_BRIDGE_HW_ADDRESS, &amp;amp;priv-&amp;gt;hw_address },
+{ NM_DEVICE_BRIDGE_CARRIER,    &amp;amp;priv-&amp;gt;carrier },
+{ NULL },
+};
+
+_nm_object_register_properties (NM_OBJECT (device),
+                                priv-&amp;gt;proxy,
+                                property_info);
+}
+
+static void
+constructed (GObject *object)
+{
+NMDeviceBridgePrivate *priv;
+
+G_OBJECT_CLASS (nm_device_bridge_parent_class)-&amp;gt;constructed (object);
+
+priv = NM_DEVICE_BRIDGE_GET_PRIVATE (object);
+
+priv-&amp;gt;proxy = dbus_g_proxy_new_for_name (nm_object_get_connection (NM_OBJECT (object)),
+                                         NM_DBUS_SERVICE,
+                                         nm_object_get_path (NM_OBJECT (object)),
+                                         NM_DBUS_INTERFACE_DEVICE_BRIDGE);
+
+register_properties (NM_DEVICE_BRIDGE (object));
+}
+
+static void
+dispose (GObject *object)
+{
+NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (object);
+
+g_clear_object (&amp;amp;priv-&amp;gt;proxy);
+
+G_OBJECT_CLASS (nm_device_bridge_parent_class)-&amp;gt;dispose (object);
+}
+
+static void
+finalize (GObject *object)
+{
+NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (object);
+
+g_free (priv-&amp;gt;hw_address);
+
+G_OBJECT_CLASS (nm_device_bridge_parent_class)-&amp;gt;finalize (object);
+}
+
+static void
+get_property (GObject *object,
+              guint prop_id,
+              GValue *value,
+              GParamSpec *pspec)
+{
+NMDeviceBridge *device = NM_DEVICE_BRIDGE (object);
+
+_nm_object_ensure_inited (NM_OBJECT (object));
+
+switch (prop_id) {
+case PROP_HW_ADDRESS:
+g_value_set_string (value, nm_device_bridge_get_hw_address (device));
+break;
+case PROP_CARRIER:
+g_value_set_boolean (value, nm_device_bridge_get_carrier (device));
+break;
+default:
+G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+break;
+}
+}
+
+static void
+nm_device_bridge_class_init (NMDeviceBridgeClass *eth_class)
+{
+GObjectClass *object_class = G_OBJECT_CLASS (eth_class);
+NMDeviceClass *device_class = NM_DEVICE_CLASS (eth_class);
+
+g_type_class_add_private (eth_class, sizeof (NMDeviceBridgePrivate));
+
+/* virtual methods */
+object_class-&amp;gt;constructed = constructed;
+object_class-&amp;gt;dispose = dispose;
+object_class-&amp;gt;finalize = finalize;
+object_class-&amp;gt;get_property = get_property;
+device_class-&amp;gt;connection_compatible = connection_compatible;
+
+/* properties */
+
+/**
+ * NMDeviceBridge:hw-address:
+ *
+ * The hardware (MAC) address of the device.
+ **/
+g_object_class_install_property
+(object_class, PROP_HW_ADDRESS,
+ g_param_spec_string (NM_DEVICE_BRIDGE_HW_ADDRESS,
+                      "Active MAC Address",
+                      "Currently set hardware MAC address",
+                      NULL,
+                      G_PARAM_READABLE));
+
+/**
+ * NMDeviceBridge:carrier:
+ *
+ * Whether the device has carrier.
+ **/
+g_object_class_install_property
+(object_class, PROP_CARRIER,
+ g_param_spec_boolean (NM_DEVICE_BRIDGE_CARRIER,
+                       "Carrier",
+                       "Carrier",
+                       FALSE,
+                       G_PARAM_READABLE));
+
+}
diff --git a/libnm-glib/nm-device-bridge.h b/libnm-glib/nm-device-bridge.h
new file mode 100644
index 0000000..135c816
--- /dev/null
+++ b/libnm-glib/nm-device-bridge.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,82 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/*
+ * libnm_glib -- Access network status &amp;amp; information from glib applications
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ */
+
+#ifndef NM_DEVICE_BRIDGE_H
+#define NM_DEVICE_BRIDGE_H
+
+#include "nm-device.h"
+
+G_BEGIN_DECLS
+
+#define NM_TYPE_DEVICE_BRIDGE            (nm_device_bridge_get_type ())
+#define NM_DEVICE_BRIDGE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DEVICE_BRIDGE, NMDeviceBridge))
+#define NM_DEVICE_BRIDGE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_DEVICE_BRIDGE, NMDeviceBridgeClass))
+#define NM_IS_DEVICE_BRIDGE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_DEVICE_BRIDGE))
+#define NM_IS_DEVICE_BRIDGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NM_TYPE_DEVICE_BRIDGE))
+#define NM_DEVICE_BRIDGE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_BRIDGE, NMDeviceBridgeClass))
+
+/**
+ * NMDeviceBridgeError:
+ * &amp;lt; at &amp;gt;NM_DEVICE_BRIDGE_ERROR_UNKNOWN: unknown or unclassified error
+ * &amp;lt; at &amp;gt;NM_DEVICE_BRIDGE_ERROR_NOT_BRIDGE_CONNECTION: the connection was not of bridge type
+ * &amp;lt; at &amp;gt;NM_DEVICE_BRIDGE_ERROR_INVALID_BRIDGE_CONNECTION: the bridge connection was invalid
+ * &amp;lt; at &amp;gt;NM_DEVICE_BRIDGE_ERROR_INTERFACE_MISMATCH: the interfaces of the connection and the device mismatched
+ */
+typedef enum {
+NM_DEVICE_BRIDGE_ERROR_UNKNOWN = 0,               /*&amp;lt; nick=UnknownError &amp;gt;*/
+NM_DEVICE_BRIDGE_ERROR_NOT_BRIDGE_CONNECTION,     /*&amp;lt; nick=NotBridgeConnection &amp;gt;*/
+NM_DEVICE_BRIDGE_ERROR_INVALID_BRIDGE_CONNECTION, /*&amp;lt; nick=InvalidBridgeConnection &amp;gt;*/
+NM_DEVICE_BRIDGE_ERROR_INTERFACE_MISMATCH,        /*&amp;lt; nick=InterfaceMismatch &amp;gt;*/
+} NMDeviceBridgeError;
+
+#define NM_DEVICE_BRIDGE_ERROR nm_device_bridge_error_quark ()
+GQuark nm_device_bridge_error_quark (void);
+
+#define NM_DEVICE_BRIDGE_HW_ADDRESS  "hw-address"
+#define NM_DEVICE_BRIDGE_CARRIER     "carrier"
+
+typedef struct {
+NMDevice parent;
+} NMDeviceBridge;
+
+typedef struct {
+NMDeviceClass parent;
+
+/* Padding for future expansion */
+void (*_reserved1) (void);
+void (*_reserved2) (void);
+void (*_reserved3) (void);
+void (*_reserved4) (void);
+void (*_reserved5) (void);
+void (*_reserved6) (void);
+} NMDeviceBridgeClass;
+
+GType        nm_device_bridge_get_type (void);
+
+GObject *    nm_device_bridge_new (DBusGConnection *connection, const char *path);
+
+const char * nm_device_bridge_get_hw_address (NMDeviceBridge *device);
+gboolean     nm_device_bridge_get_carrier (NMDeviceBridge *device);
+
+G_END_DECLS
+
+#endif /* NM_DEVICE_BRIDGE_H */
diff --git a/libnm-glib/nm-device.c b/libnm-glib/nm-device.c
index 6f79d81..a09010c 100644
--- a/libnm-glib/nm-device.c
+++ b/libnm-glib/nm-device.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -35,6 +35,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include "nm-device-wimax.h"
 #include "nm-device-infiniband.h"
 #include "nm-device-bond.h"
+#include "nm-device-bridge.h"
 #include "nm-device-vlan.h"
 #include "nm-device.h"
 #include "nm-device-private.h"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -220,6 +221,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; _nm_device_gtype_from_dtype (NMDeviceType dtype)
 return NM_TYPE_DEVICE_BOND;
 case NM_DEVICE_TYPE_VLAN:
 return NM_TYPE_DEVICE_VLAN;
+case NM_DEVICE_TYPE_BRIDGE:
+return NM_TYPE_DEVICE_BRIDGE;
 default:
 g_warning ("Unknown device type %d", dtype);
 return G_TYPE_INVALID;
diff --git a/src/Makefile.am b/src/Makefile.am
index 7930c28..8c2ca67 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -138,6 +138,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; NetworkManager_SOURCES = \
 nm-device-infiniband.h \
 nm-device-bond.c \
 nm-device-bond.h \
+nm-device-bridge.c \
+nm-device-bridge.h \
 nm-device-vlan.c \
 nm-device-vlan.h \
 nm-wifi-ap.c \
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -239,6 +241,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nm-device-olpc-mesh-glue.h: $(top_srcdir)/introspection/nm-device-olpc-mesh.xml
 nm-device-bond-glue.h: $(top_srcdir)/introspection/nm-device-bond.xml
 $(AM_V_GEN) dbus-binding-tool --prefix=nm_device_bond --mode=glib-server --output=$&amp;lt; at &amp;gt; $&amp;lt;
 
+nm-device-bridge-glue.h: $(top_srcdir)/introspection/nm-device-bridge.xml
+$(AM_V_GEN) dbus-binding-tool --prefix=nm_device_bridge --mode=glib-server --output=$&amp;lt; at &amp;gt; $&amp;lt;
+
 nm-device-vlan-glue.h: $(top_srcdir)/introspection/nm-device-vlan.xml
 $(AM_V_GEN) dbus-binding-tool --prefix=nm_device_vlan --mode=glib-server --output=$&amp;lt; at &amp;gt; $&amp;lt;
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -267,6 +272,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; BUILT_SOURCES = \
 nm-device-ethernet-glue.h \
 nm-device-infiniband-glue.h \
 nm-device-bond-glue.h \
+nm-device-bridge-glue.h \
 nm-device-vlan-glue.h \
 nm-device-adsl-glue.h \
 nm-device-wifi-glue.h \
diff --git a/src/nm-device-bridge.c b/src/nm-device-bridge.c
new file mode 100644
index 0000000..729eb97
--- /dev/null
+++ b/src/nm-device-bridge.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,560 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager -- Network link manager
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Copyright 2011 - 2012 Red Hat, Inc.
+ */
+
+#include "config.h"
+
+#include &amp;lt;glib.h&amp;gt;
+#include &amp;lt;glib/gi18n.h&amp;gt;
+
+#include &amp;lt;netinet/ether.h&amp;gt;
+
+#include "nm-device-bridge.h"
+#include "nm-logging.h"
+#include "nm-properties-changed-signal.h"
+#include "nm-utils.h"
+#include "NetworkManagerUtils.h"
+#include "nm-device-private.h"
+#include "nm-netlink-monitor.h"
+#include "nm-enum-types.h"
+#include "nm-system.h"
+
+#include "nm-device-bridge-glue.h"
+
+
+G_DEFINE_TYPE (NMDeviceBridge, nm_device_bridge, NM_TYPE_DEVICE_WIRED)
+
+#define NM_DEVICE_BRIDGE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_BRIDGE, NMDeviceBridgePrivate))
+
+#define NM_BRIDGE_ERROR (nm_bridge_error_quark ())
+
+typedef struct {
+GSList *slaves;
+} NMDeviceBridgePrivate;
+
+enum {
+PROPERTIES_CHANGED,
+
+LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = { 0 };
+
+enum {
+PROP_0,
+PROP_HW_ADDRESS,
+PROP_CARRIER,
+
+LAST_PROP
+};
+
+/******************************************************************/
+
+static GQuark
+nm_bridge_error_quark (void)
+{
+static GQuark quark = 0;
+if (!quark)
+quark = g_quark_from_static_string ("nm-bridge-error");
+return quark;
+}
+
+/******************************************************************/
+
+static void
+device_state_changed (NMDevice *device,
+                      NMDeviceState new_state,
+                      NMDeviceState old_state,
+                      NMDeviceStateReason reason,
+                      gpointer user_data)
+{
+if (new_state == NM_DEVICE_STATE_UNAVAILABLE) {
+/* Use NM_DEVICE_STATE_REASON_CARRIER to make sure num retries is reset */
+nm_device_queue_state (device, NM_DEVICE_STATE_DISCONNECTED, NM_DEVICE_STATE_REASON_CARRIER);
+}
+}
+
+static void
+real_update_hw_address (NMDevice *dev)
+{
+const guint8 *hw_addr;
+guint8 old_addr[NM_UTILS_HWADDR_LEN_MAX];
+int addrtype, addrlen;
+
+addrtype = nm_device_wired_get_hwaddr_type (NM_DEVICE_WIRED (dev));
+g_assert (addrtype &amp;gt;= 0);
+addrlen = nm_utils_hwaddr_len (addrtype);
+g_assert (addrlen &amp;gt; 0);
+
+hw_addr = nm_device_wired_get_hwaddr (NM_DEVICE_WIRED (dev));
+memcpy (old_addr, hw_addr, addrlen);
+
+NM_DEVICE_CLASS (nm_device_bridge_parent_class)-&amp;gt;update_hw_address (dev);
+
+hw_addr = nm_device_wired_get_hwaddr (NM_DEVICE_WIRED (dev));
+if (memcmp (old_addr, hw_addr, addrlen))
+g_object_notify (G_OBJECT (dev), NM_DEVICE_BRIDGE_HW_ADDRESS);
+}
+
+static guint32
+real_get_generic_capabilities (NMDevice *dev)
+{
+return NM_DEVICE_CAP_CARRIER_DETECT | NM_DEVICE_CAP_NM_SUPPORTED;
+}
+
+static gboolean
+match_bridge_connection (NMDevice *device, NMConnection *connection, GError **error)
+{
+const char *iface;
+NMSettingBridge *s_bridge;
+
+s_bridge = nm_connection_get_setting_bridge (connection);
+if (!s_bridge || !nm_connection_is_type (connection, NM_SETTING_BRIDGE_SETTING_NAME)) {
+g_set_error (error, NM_BRIDGE_ERROR, NM_BRIDGE_ERROR_CONNECTION_NOT_BRIDGE,
+             "The connection was not a bridge connection.");
+return FALSE;
+}
+
+/* Bridge connections must specify the virtual interface name */
+iface = nm_connection_get_virtual_iface_name (connection);
+if (!iface || strcmp (nm_device_get_iface (device), iface)) {
+g_set_error (error, NM_BRIDGE_ERROR, NM_BRIDGE_ERROR_CONNECTION_NOT_BRIDGE,
+             "The bridge connection virtual interface name did not match.");
+return FALSE;
+}
+
+return TRUE;
+}
+
+static NMConnection *
+real_get_best_auto_connection (NMDevice *dev,
+                               GSList *connections,
+                               char **specific_object)
+{
+GSList *iter;
+
+for (iter = connections; iter; iter = g_slist_next (iter)) {
+NMConnection *connection = NM_CONNECTION (iter-&amp;gt;data);
+NMSettingConnection *s_con;
+
+s_con = nm_connection_get_setting_connection (connection);
+g_assert (s_con);
+if (   nm_setting_connection_get_autoconnect (s_con)
+    &amp;amp;&amp;amp; match_bridge_connection (dev, connection, NULL))
+return connection;
+}
+return NULL;
+}
+
+static gboolean
+real_check_connection_compatible (NMDevice *device,
+                                  NMConnection *connection,
+                                  GError **error)
+{
+return match_bridge_connection (device, connection, error);
+}
+
+static gboolean
+real_complete_connection (NMDevice *device,
+                          NMConnection *connection,
+                          const char *specific_object,
+                          const GSList *existing_connections,
+                          GError **error)
+{
+NMSettingBridge *s_bridge, *tmp;
+guint32 i = 0;
+char *name;
+const GSList *iter;
+gboolean found;
+
+nm_utils_complete_generic (connection,
+                           NM_SETTING_BRIDGE_SETTING_NAME,
+                           existing_connections,
+                           _("Bridge connection %d"),
+                           NULL,
+                           TRUE);
+
+s_bridge = nm_connection_get_setting_bridge (connection);
+if (!s_bridge) {
+s_bridge = (NMSettingBridge *) nm_setting_bridge_new ();
+nm_connection_add_setting (connection, NM_SETTING (s_bridge));
+}
+
+/* Grab the first name that doesn't exist in either our connections
+ * or a device on the system.
+ */
+while (i &amp;lt; 500 &amp;amp;&amp;amp; !nm_setting_bridge_get_interface_name (s_bridge)) {
+name = g_strdup_printf ("bridge%u", i);
+/* check interface names */
+if (nm_netlink_iface_to_index (name) &amp;lt; 0) {
+/* check existing bridge connections */
+for (iter = existing_connections, found = FALSE; iter; iter = g_slist_next (iter)) {
+NMConnection *candidate = iter-&amp;gt;data;
+
+tmp = nm_connection_get_setting_bridge (candidate);
+if (tmp &amp;amp;&amp;amp; nm_connection_is_type (candidate, NM_SETTING_BRIDGE_SETTING_NAME)) {
+if (g_strcmp0 (nm_setting_bridge_get_interface_name (tmp), name) == 0) {
+found = TRUE;
+break;
+}
+}
+}
+
+if (!found)
+g_object_set (G_OBJECT (s_bridge), NM_SETTING_BRIDGE_INTERFACE_NAME, name, NULL);
+}
+
+g_free (name);
+i++;
+}
+
+return TRUE;
+}
+
+static gboolean
+spec_match_list (NMDevice *device, const GSList *specs)
+{
+char *hwaddr;
+gboolean matched;
+
+hwaddr = nm_utils_hwaddr_ntoa (nm_device_wired_get_hwaddr (NM_DEVICE_WIRED (device)), ARPHRD_ETHER);
+matched = nm_match_spec_hwaddr (specs, hwaddr);
+g_free (hwaddr);
+
+return matched;
+}
+
+static gboolean
+bridge_match_config (NMDevice *self, NMConnection *connection)
+{
+NMSettingBridge *s_bridge;
+const char *ifname;
+
+s_bridge = nm_connection_get_setting_bridge (connection);
+if (!s_bridge)
+return FALSE;
+
+/* Interface name */
+ifname = nm_setting_bridge_get_interface_name (s_bridge);
+if (g_strcmp0 (ifname, nm_device_get_ip_iface (self)) != 0)
+return FALSE;
+
+return TRUE;
+}
+
+static NMConnection *
+connection_match_config (NMDevice *self, const GSList *connections)
+{
+const GSList *iter;
+GSList *bridge_matches;
+NMConnection *match;
+
+/* First narrow &amp;lt; at &amp;gt;connections down to those that match in their
+ * NMSettingBridge configuration.
+ */
+bridge_matches = NULL;
+for (iter = connections; iter; iter = iter-&amp;gt;next) {
+NMConnection *candidate = NM_CONNECTION (iter-&amp;gt;data);
+
+if (!nm_connection_is_type (candidate, NM_SETTING_BRIDGE_SETTING_NAME))
+continue;
+if (!bridge_match_config (self, candidate))
+continue;
+
+bridge_matches = g_slist_prepend (bridge_matches, candidate);
+}
+
+/* Now pass those to the super method, which will check IP config */
+bridge_matches = g_slist_reverse (bridge_matches);
+match = NM_DEVICE_CLASS (nm_device_bridge_parent_class)-&amp;gt;connection_match_config (self, bridge_matches);
+g_slist_free (bridge_matches);
+
+return match;
+}
+
+/******************************************************************/
+
+static NMActStageReturn
+real_act_stage1_prepare (NMDevice *dev, NMDeviceStateReason *reason)
+{
+NMActStageReturn ret = NM_ACT_STAGE_RETURN_SUCCESS;
+#if 0
+NMConnection *connection;
+NMSettingBridge *s_bridge;
+#endif
+
+g_return_val_if_fail (reason != NULL, NM_ACT_STAGE_RETURN_FAILURE);
+
+ret = NM_DEVICE_CLASS (nm_device_bridge_parent_class)-&amp;gt;act_stage1_prepare (dev, reason);
+if (ret == NM_ACT_STAGE_RETURN_SUCCESS) {
+#if 0
+connection = nm_device_get_connection (dev);
+g_assert (connection);
+s_bridge = nm_connection_get_setting_bridge (connection);
+g_assert (s_bridge);
+#endif
+
+/* FIXME: apply settings */
+}
+return ret;
+}
+
+static void
+slave_state_changed (NMDevice *slave,
+                     NMDeviceState new_state,
+                     NMDeviceState old_state,
+                     NMDeviceStateReason reason,
+                     gpointer user_data)
+{
+NMDeviceBridge *self = NM_DEVICE_BRIDGE (user_data);
+
+nm_log_dbg (LOGD_DEVICE, "(%s): slave %s state change %d -&amp;gt; %d",
+            nm_device_get_iface (NM_DEVICE (self)),
+            nm_device_get_iface (slave),
+            old_state,
+            new_state);
+
+if (   old_state &amp;gt; NM_DEVICE_STATE_DISCONNECTED
+    &amp;amp;&amp;amp; new_state &amp;lt;= NM_DEVICE_STATE_DISCONNECTED) {
+/* Slave is no longer available or managed; can't use it */
+nm_device_release_slave (NM_DEVICE (self), slave);
+}
+}
+
+typedef struct {
+NMDevice *slave;
+guint state_id;
+} SlaveInfo;
+
+static SlaveInfo *
+find_slave_info_by_device (NMDeviceBridge *self, NMDevice *slave)
+{
+NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (self);
+GSList *iter;
+
+for (iter = priv-&amp;gt;slaves; iter; iter = g_slist_next (iter)) {
+if (((SlaveInfo *) iter-&amp;gt;data)-&amp;gt;slave == slave)
+return iter-&amp;gt;data;
+}
+return NULL;
+}
+
+static void
+free_slave_info (SlaveInfo *sinfo)
+{
+g_return_if_fail (sinfo != NULL);
+g_return_if_fail (sinfo-&amp;gt;slave != NULL);
+
+g_signal_handler_disconnect (sinfo-&amp;gt;slave, sinfo-&amp;gt;state_id);
+g_object_unref (sinfo-&amp;gt;slave);
+memset (sinfo, 0, sizeof (*sinfo));
+g_free (sinfo);
+}
+
+static gboolean
+enslave_slave (NMDevice *device, NMDevice *slave)
+{
+NMDeviceBridge *self = NM_DEVICE_BRIDGE (device);
+NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (self);
+gboolean success;
+
+if (find_slave_info_by_device (self, slave))
+return TRUE;
+
+success = nm_system_bridge_attach (nm_device_get_ip_ifindex (device),
+                                   nm_device_get_ip_iface (device),
+                                   nm_device_get_ip_ifindex (slave),
+                                   nm_device_get_ip_iface (slave));
+if (success) {
+SlaveInfo *sinfo;
+
+sinfo = g_malloc0 (sizeof (*slave));
+sinfo-&amp;gt;slave = g_object_ref (slave);
+sinfo-&amp;gt;state_id = g_signal_connect (slave,
+                                    "state-changed",
+                                    (GCallback) slave_state_changed,
+                                    self);
+priv-&amp;gt;slaves = g_slist_append (priv-&amp;gt;slaves, sinfo);
+
+nm_log_dbg (LOGD_DEVICE, "(%s): attached bridge component %s",
+        nm_device_get_ip_iface (device),
+        nm_device_get_ip_iface (slave));
+}
+
+return success;
+}
+
+static gboolean
+release_slave (NMDevice *device, NMDevice *slave)
+{
+NMDeviceBridge *self = NM_DEVICE_BRIDGE (device);
+NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (self);
+gboolean success;
+SlaveInfo *sinfo;
+
+sinfo = find_slave_info_by_device (self, slave);
+if (!sinfo)
+return FALSE;
+
+success = nm_system_bridge_detach (nm_device_get_ip_ifindex (device),
+                                   nm_device_get_ip_iface (device),
+                                   nm_device_get_ip_ifindex (slave),
+                                   nm_device_get_ip_iface (slave));
+nm_log_dbg (LOGD_DEVICE, "(%s): detached bridge component %s (success %d)",
+            nm_device_get_ip_iface (device),
+            nm_device_get_ip_iface (slave),
+            success);
+priv-&amp;gt;slaves = g_slist_remove (priv-&amp;gt;slaves, sinfo);
+free_slave_info (sinfo);
+return success;
+}
+
+/******************************************************************/
+
+NMDevice *
+nm_device_bridge_new (const char *udi, const char *iface)
+{
+g_return_val_if_fail (udi != NULL, NULL);
+g_return_val_if_fail (iface != NULL, NULL);
+
+return (NMDevice *) g_object_new (NM_TYPE_DEVICE_BRIDGE,
+                                  NM_DEVICE_UDI, udi,
+                                  NM_DEVICE_IFACE, iface,
+                                  NM_DEVICE_DRIVER, "bridge",
+                                  NM_DEVICE_TYPE_DESC, "Bridge",
+                                  NM_DEVICE_DEVICE_TYPE, NM_DEVICE_TYPE_BRIDGE,
+                                  NULL);
+}
+
+static void
+constructed (GObject *object)
+{
+G_OBJECT_CLASS (nm_device_bridge_parent_class)-&amp;gt;constructed (object);
+
+nm_log_dbg (LOGD_HW | LOGD_DEVICE, "(%s): kernel ifindex %d",
+            nm_device_get_iface (NM_DEVICE (object)),
+            nm_device_get_ifindex (NM_DEVICE (object)));
+}
+
+static void
+nm_device_bridge_init (NMDeviceBridge * self)
+{
+g_signal_connect (self, "state-changed", G_CALLBACK (device_state_changed), NULL);
+}
+
+static void
+get_property (GObject *object, guint prop_id,
+              GValue *value, GParamSpec *pspec)
+{
+const guint8 *current_addr;
+
+switch (prop_id) {
+case PROP_HW_ADDRESS:
+current_addr = nm_device_wired_get_hwaddr (NM_DEVICE_WIRED (object));
+g_value_take_string (value, nm_utils_hwaddr_ntoa (current_addr, ARPHRD_ETHER));
+break;
+case PROP_CARRIER:
+g_value_set_boolean (value, nm_device_wired_get_carrier (NM_DEVICE_WIRED (object)));
+break;
+default:
+G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+break;
+}
+}
+
+static void
+set_property (GObject *object, guint prop_id,
+  const GValue *value, GParamSpec *pspec)
+{
+switch (prop_id) {
+default:
+G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+break;
+}
+}
+
+static void
+dispose (GObject *object)
+{
+NMDeviceBridge *self = NM_DEVICE_BRIDGE (object);
+NMDeviceBridgePrivate *priv = NM_DEVICE_BRIDGE_GET_PRIVATE (self);
+GSList *iter;
+
+for (iter = priv-&amp;gt;slaves; iter; iter = g_slist_next (iter))
+release_slave (NM_DEVICE (self), ((SlaveInfo *) iter-&amp;gt;data)-&amp;gt;slave);
+g_slist_free (priv-&amp;gt;slaves);
+priv-&amp;gt;slaves = NULL;
+
+G_OBJECT_CLASS (nm_device_bridge_parent_class)-&amp;gt;dispose (object);
+}
+
+static void
+nm_device_bridge_class_init (NMDeviceBridgeClass *klass)
+{
+GObjectClass *object_class = G_OBJECT_CLASS (klass);
+NMDeviceClass *parent_class = NM_DEVICE_CLASS (klass);
+
+g_type_class_add_private (object_class, sizeof (NMDeviceBridgePrivate));
+
+/* virtual methods */
+object_class-&amp;gt;constructed = constructed;
+object_class-&amp;gt;get_property = get_property;
+object_class-&amp;gt;set_property = set_property;
+object_class-&amp;gt;dispose = dispose;
+
+parent_class-&amp;gt;get_generic_capabilities = real_get_generic_capabilities;
+parent_class-&amp;gt;update_hw_address = real_update_hw_address;
+parent_class-&amp;gt;get_best_auto_connection = real_get_best_auto_connection;
+parent_class-&amp;gt;check_connection_compatible = real_check_connection_compatible;
+parent_class-&amp;gt;complete_connection = real_complete_connection;
+
+parent_class-&amp;gt;spec_match_list = spec_match_list;
+parent_class-&amp;gt;connection_match_config = connection_match_config;
+
+parent_class-&amp;gt;act_stage1_prepare = real_act_stage1_prepare;
+parent_class-&amp;gt;enslave_slave = enslave_slave;
+parent_class-&amp;gt;release_slave = release_slave;
+
+/* properties */
+g_object_class_install_property
+(object_class, PROP_HW_ADDRESS,
+ g_param_spec_string (NM_DEVICE_BRIDGE_HW_ADDRESS,
+  "Active MAC Address",
+  "Currently set hardware MAC address",
+  NULL,
+  G_PARAM_READABLE));
+
+g_object_class_install_property
+(object_class, PROP_CARRIER,
+ g_param_spec_boolean (NM_DEVICE_BRIDGE_CARRIER,
+   "Carrier",
+   "Carrier",
+   FALSE,
+   G_PARAM_READABLE));
+
+/* Signals */
+signals[PROPERTIES_CHANGED] =
+nm_properties_changed_signal_new (object_class,
+  G_STRUCT_OFFSET (NMDeviceBridgeClass, properties_changed));
+
+dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
+ &amp;amp;dbus_glib_nm_device_bridge_object_info);
+
+dbus_g_error_domain_register (NM_BRIDGE_ERROR, NULL, NM_TYPE_BRIDGE_ERROR);
+}
diff --git a/src/nm-device-bridge.h b/src/nm-device-bridge.h
new file mode 100644
index 0000000..0ab0775
--- /dev/null
+++ b/src/nm-device-bridge.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,65 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager -- Network link manager
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Copyright 2012 Red Hat, Inc.
+ */
+
+#ifndef NM_DEVICE_BRIDGE_H
+#define NM_DEVICE_BRIDGE_H
+
+#include &amp;lt;glib-object.h&amp;gt;
+
+#include "nm-device-wired.h"
+
+G_BEGIN_DECLS
+
+#define NM_TYPE_DEVICE_BRIDGE            (nm_device_bridge_get_type ())
+#define NM_DEVICE_BRIDGE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DEVICE_BRIDGE, NMDeviceBridge))
+#define NM_DEVICE_BRIDGE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass),  NM_TYPE_DEVICE_BRIDGE, NMDeviceBridgeClass))
+#define NM_IS_DEVICE_BRIDGE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_DEVICE_BRIDGE))
+#define NM_IS_DEVICE_BRIDGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),  NM_TYPE_DEVICE_BRIDGE))
+#define NM_DEVICE_BRIDGE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj),  NM_TYPE_DEVICE_BRIDGE, NMDeviceBridgeClass))
+
+typedef enum {
+NM_BRIDGE_ERROR_CONNECTION_NOT_BRIDGE = 0, /*&amp;lt; nick=ConnectionNotBridge &amp;gt;*/
+NM_BRIDGE_ERROR_CONNECTION_INVALID,      /*&amp;lt; nick=ConnectionInvalid &amp;gt;*/
+NM_BRIDGE_ERROR_CONNECTION_INCOMPATIBLE, /*&amp;lt; nick=ConnectionIncompatible &amp;gt;*/
+} NMBridgeError;
+
+#define NM_DEVICE_BRIDGE_HW_ADDRESS "hw-address"
+#define NM_DEVICE_BRIDGE_CARRIER "carrier"
+
+typedef struct {
+NMDeviceWired parent;
+} NMDeviceBridge;
+
+typedef struct {
+NMDeviceWiredClass parent;
+
+/* Signals */
+void (*properties_changed) (NMDeviceBridge *device, GHashTable *properties);
+} NMDeviceBridgeClass;
+
+
+GType nm_device_bridge_get_type (void);
+
+NMDevice *nm_device_bridge_new (const char *udi,
+                                const char *iface);
+
+G_END_DECLS
+
+#endif/* NM_DEVICE_BRIDGE_H */
diff --git a/src/nm-device-wired.c b/src/nm-device-wired.c
index 60e5f26..47c93c0 100644
--- a/src/nm-device-wired.c
+++ b/src/nm-device-wired.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -304,6 +304,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; constructor (GType type,
 /* We may not know the hardware address type until a slave is added */
 priv-&amp;gt;hw_addr_type = ARPHRD_ETHER;
 priv-&amp;gt;hw_addr_len = ETH_ALEN;
+} else if (nm_device_get_device_type (self) == NM_DEVICE_TYPE_BRIDGE) {
+priv-&amp;gt;hw_addr_type = ARPHRD_ETHER;
+priv-&amp;gt;hw_addr_len = ETH_ALEN;
 } else
 g_assert_not_reached ();
 
diff --git a/src/nm-manager.c b/src/nm-manager.c
index 7e03bc6..1b35c4e 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -47,6 +47,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include "nm-device-modem.h"
 #include "nm-device-infiniband.h"
 #include "nm-device-bond.h"
+#include "nm-device-bridge.h"
 #include "nm-device-vlan.h"
 #include "nm-device-adsl.h"
 #include "nm-system.h"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1015,6 +1016,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; get_virtual_iface_name (NMManager *self,
 if (nm_connection_is_type (connection, NM_SETTING_BOND_SETTING_NAME))
 return g_strdup (nm_connection_get_virtual_iface_name (connection));
 
+if (nm_connection_is_type (connection, NM_SETTING_BRIDGE_SETTING_NAME))
+return g_strdup (nm_connection_get_virtual_iface_name (connection));
+
 if (nm_connection_is_type (connection, NM_SETTING_VLAN_SETTING_NAME)) {
 NMSettingVlan *s_vlan;
 const char *ifname;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1046,9 +1050,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; get_virtual_iface_name (NMManager *self,
 static gboolean
 connection_needs_virtual_device (NMConnection *connection)
 {
-if (nm_connection_is_type (connection, NM_SETTING_BOND_SETTING_NAME))
-return TRUE;
-if (nm_connection_is_type (connection, NM_SETTING_VLAN_SETTING_NAME))
+if (   nm_connection_is_type (connection, NM_SETTING_BOND_SETTING_NAME)
+    || nm_connection_is_type (connection, NM_SETTING_BRIDGE_SETTING_NAME)
+    || nm_connection_is_type (connection, NM_SETTING_VLAN_SETTING_NAME))
 return TRUE;
 
 return FALSE;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1110,6 +1114,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; system_create_virtual_device (NMManager *self, NMConnection *connection)
 udi = get_virtual_iface_placeholder_udi ();
 device = nm_device_bond_new (udi, iface);
 g_free (udi);
+} else if (nm_connection_is_type (connection, NM_SETTING_BRIDGE_SETTING_NAME)) {
+if (!nm_system_create_bridge (iface)) {
+nm_log_warn (LOGD_DEVICE, "(%s): failed to add bridging interface for '%s'",
+             iface, nm_connection_get_id (connection));
+goto out;
+}
+
+udi = get_virtual_iface_placeholder_udi ();
+device = nm_device_bridge_new (udi, iface);
+g_free (udi);
 } else if (nm_connection_is_type (connection, NM_SETTING_VLAN_SETTING_NAME)) {
 g_return_val_if_fail (parent != NULL, FALSE);
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2021,6 +2035,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; is_bond (int ifindex)
 }
 
 static gboolean
+is_bridge (int ifindex)
+{
+return (nm_system_get_iface_type (ifindex, NULL) == NM_IFACE_TYPE_BRIDGE);
+}
+
+static gboolean
 is_vlan (int ifindex)
 {
 return (nm_system_get_iface_type (ifindex, NULL) == NM_IFACE_TYPE_VLAN);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2099,6 +2119,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; udev_device_added_cb (NMUdevManager *udev_mgr,
 device = nm_device_infiniband_new (sysfs_path, iface, driver);
 else if (is_bond (ifindex))
 device = nm_device_bond_new (sysfs_path, iface);
+else if (is_bridge (ifindex))
+device = nm_device_bridge_new (sysfs_path, iface);
 else if (is_vlan (ifindex)) {
 int parent_ifindex = -1;
 NMDevice *parent;
diff --git a/src/nm-udev-manager.c b/src/nm-udev-manager.c
index 57b36d3..7bcc3e2 100644
--- a/src/nm-udev-manager.c
+++ b/src/nm-udev-manager.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -389,6 +389,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; dev_get_attrs (GUdevDevice *udev_device,
 case NM_IFACE_TYPE_BOND:
 driver = "bonding";
 break;
+case NM_IFACE_TYPE_BRIDGE:
+driver = "bridge";
+break;
 case NM_IFACE_TYPE_VLAN:
 driver = "8021q";
 break;
&lt;/pre&gt;</description>
    <dc:creator>Thomas Graf</dc:creator>
    <dc:date>2012-05-23T14:19:29</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21210">
    <title>[PATCH 4/6] bridge: support bridging slaves</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21210</link>
    <description>&lt;pre&gt;Allows to attach any connection to a bridge using the BRIDGE= key.
IP configuration is optional for bridge components but not
prohibited. Test case included.
---
 src/settings/plugins/ifcfg-rh/reader.c             |   52 +++----
 .../plugins/ifcfg-rh/tests/test-ifcfg-rh.c         |  155 +++++++++++++++++++-
 src/settings/plugins/ifcfg-rh/utils.c              |    5 +-
 src/settings/plugins/ifcfg-rh/writer.c             |    2 +
 4 files changed, 175 insertions(+), 39 deletions(-)

diff --git a/src/settings/plugins/ifcfg-rh/reader.c b/src/settings/plugins/ifcfg-rh/reader.c
index 8d490bf..2ea63ea 100644
--- a/src/settings/plugins/ifcfg-rh/reader.c
+++ b/src/settings/plugins/ifcfg-rh/reader.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -169,6 +169,24 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; make_connection_setting (const char *file,
 g_object_set (s_con, NM_SETTING_CONNECTION_ZONE, zone, NULL);
 g_free (zone);
 
+value = svGetValue (ifcfg, "BRIDGE", FALSE);
+if (value) {
+const char *bridge;
+
+if ((bridge = nm_setting_connection_get_master (s_con))) {
+PLUGIN_WARN (IFCFG_PLUGIN_NAME,
+             "     warning: Already configured as slave of %s. "
+             "Ignoring BRIDGE=\"%s\"", bridge, value);
+g_free (value);
+}
+
+g_object_set (s_con, NM_SETTING_CONNECTION_MASTER, value, NULL);
+g_object_set (s_con, NM_SETTING_CONNECTION_SLAVE_TYPE,
+              NM_SETTING_BRIDGE_SETTING_NAME, NULL);
+g_free (value);
+
+}
+
 return NM_SETTING (s_con);
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4035,11 +4053,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; vlan_connection_from_ifcfg (const char *file,
 return connection;
 }
 
-enum {
-IGNORE_REASON_NONE = 0x00,
-IGNORE_REASON_BRIDGE = 0x01,
-};
-
 NMConnection *
 connection_from_file (const char *filename,
                       const char *network_file,  /* for unit tests only */
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4054,13 +4067,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; connection_from_file (const char *filename,
 {
 NMConnection *connection = NULL;
 shvarFile *parsed;
-char *type, *nmc = NULL, *bootproto, *tmp;
+char *type, *nmc = NULL, *bootproto;
 NMSetting *s_ip4, *s_ip6;
 const char *ifcfg_name = NULL;
 gboolean nm_controlled = TRUE;
 gboolean can_disable_ip4 = FALSE;
 GError *error = NULL;
-guint32 ignore_reason = IGNORE_REASON_NONE;
 
 g_return_val_if_fail (filename != NULL, NULL);
 g_return_val_if_fail (unmanaged != NULL, NULL);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4159,14 +4171,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; connection_from_file (const char *filename,
 goto done;
 }
 
-/* Ignore BRIDGE= connections for now too (rh #619863) */
-tmp = svGetValue (parsed, "BRIDGE", FALSE);
-if (tmp) {
-g_free (tmp);
-nm_controlled = FALSE;
-ignore_reason = IGNORE_REASON_BRIDGE;
-}
-
 /* Construct the connection */
 if (!strcasecmp (type, TYPE_ETHERNET))
 connection = wired_connection_from_ifcfg (filename, parsed, nm_controlled, unmanaged, &amp;amp;error);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4193,24 +4197,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; connection_from_file (const char *filename,
 g_free (type);
 
 /* Don't bother reading the connection fully if it's unmanaged or ignored */
-if (!connection || *unmanaged || ignore_reason) {
-if (connection &amp;amp;&amp;amp; !*unmanaged) {
-/* However,BRIDGE and VLAN connections that don't have HWADDR won't
- * be unmanaged because the unmanaged state is keyed off HWADDR.
- * They willl still be tagged 'ignore' from code that checks BRIDGE
- * and VLAN above.  Since they aren't marked unmanaged, kill them
- * completely.
- */
-if (ignore_reason) {
-g_object_unref (connection);
-connection = NULL;
-g_set_error (&amp;amp;error, IFCFG_PLUGIN_ERROR, 0,
-             "%s connections are not yet supported",
-             ignore_reason == IGNORE_REASON_BRIDGE ? "Bridge" : "VLAN");
-}
-}
+if (!connection || *unmanaged)
 goto done;
-}
 
 s_ip6 = make_ip6_setting (parsed, network_file, iscsiadm_path, &amp;amp;error);
 if (error) {
diff --git a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
index fa25dce..8570338 100644
--- a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
+++ b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -11980,6 +11980,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void
 test_read_bridge_component (void)
 {
 NMConnection *connection;
+NMSettingConnection *s_con;
 char *unmanaged = NULL;
 char *keyfile = NULL;
 char *routefile = NULL;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -12000,11 +12001,21 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; test_read_bridge_component (void)
 ASSERT (connection != NULL,
         "bridge-component-read", "unexpected failure reading %s", TEST_IFCFG_BRIDGE_COMPONENT);
 
-ASSERT (unmanaged != NULL,
-        "bridge-component-read", "missing unmanaged spec from %s", TEST_IFCFG_BRIDGE_COMPONENT);
+ASSERT (nm_connection_verify (connection, &amp;amp;error),
+        "bridge-component-read", "failed to verify %s: %s", TEST_IFCFG_BRIDGE_COMPONENT, error-&amp;gt;message);
+
+s_con = nm_connection_get_setting_connection (connection);
+ASSERT (s_con != NULL,
+        "bridge-component-read", "failed to verify %s: missing %s setting",
+        TEST_IFCFG_BRIDGE_COMPONENT, NM_SETTING_CONNECTION_SETTING_NAME);
 
-ASSERT (g_strcmp0 (unmanaged, "mac:00:22:15:59:62:97") == 0,
-        "bridge-component-read", "unexpected unmanaged spec from %s", TEST_IFCFG_BRIDGE_COMPONENT);
+ASSERT (g_strcmp0 (nm_setting_connection_get_master (s_con), "br0") == 0,
+        "bridge-component-read", "failed to verify %s: master is not br0",
+        TEST_IFCFG_BRIDGE_COMPONENT);
+
+ASSERT (g_strcmp0 (nm_setting_connection_get_slave_type (s_con), NM_SETTING_BRIDGE_SETTING_NAME) == 0,
+        "bridge-component-read", "failed to verify %s: slave-type is not bridge",
+        TEST_IFCFG_BRIDGE_COMPONENT);
 
 g_free (unmanaged);
 g_free (keyfile);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -12013,6 +12024,139 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; test_read_bridge_component (void)
 g_object_unref (connection);
 }
 
+static void
+test_write_bridge_component (void)
+{
+NMConnection *connection;
+NMConnection *reread;
+NMSettingConnection *s_con;
+NMSettingWired *s_wired;
+NMSettingIP4Config *s_ip4;
+NMSettingIP6Config *s_ip6;
+static unsigned char tmpmac[] = { 0x31, 0x33, 0x33, 0x37, 0xbe, 0xcd };
+GByteArray *mac;
+guint32 mtu = 1492;
+char *uuid;
+gboolean success;
+GError *error = NULL;
+char *testfile = NULL;
+char *unmanaged = NULL;
+char *keyfile = NULL;
+char *routefile = NULL;
+char *route6file = NULL;
+gboolean ignore_error = FALSE;
+
+connection = nm_connection_new ();
+ASSERT (connection != NULL,
+        "bridge-component-write", "failed to allocate new connection");
+
+/* Connection setting */
+s_con = (NMSettingConnection *) nm_setting_connection_new ();
+ASSERT (s_con != NULL,
+        "bridge-component-write", "failed to allocate new %s setting",
+        NM_SETTING_CONNECTION_SETTING_NAME);
+nm_connection_add_setting (connection, NM_SETTING (s_con));
+
+uuid = nm_utils_uuid_generate ();
+g_object_set (s_con,
+              NM_SETTING_CONNECTION_ID, "Test Write Bridge Component",
+              NM_SETTING_CONNECTION_UUID, uuid,
+              NM_SETTING_CONNECTION_AUTOCONNECT, TRUE,
+              NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRED_SETTING_NAME,
+  NM_SETTING_CONNECTION_MASTER, "br0",
+  NM_SETTING_CONNECTION_SLAVE_TYPE, NM_SETTING_BRIDGE_SETTING_NAME,
+              NULL);
+g_free (uuid);
+
+/* Wired setting */
+s_wired = (NMSettingWired *) nm_setting_wired_new ();
+ASSERT (s_wired != NULL,
+        "bridge-component-write", "failed to allocate new %s setting",
+        NM_SETTING_WIRED_SETTING_NAME);
+nm_connection_add_setting (connection, NM_SETTING (s_wired));
+
+mac = g_byte_array_sized_new (sizeof (tmpmac));
+g_byte_array_append (mac, &amp;amp;tmpmac[0], sizeof (tmpmac));
+
+g_object_set (s_wired,
+              NM_SETTING_WIRED_MAC_ADDRESS, mac,
+              NM_SETTING_WIRED_MTU, mtu,
+              NULL);
+g_byte_array_free (mac, TRUE);
+
+/* IP4 setting */
+s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new ();
+ASSERT (s_ip4 != NULL,
+"bridge-component-write", "failed to allocate new %s setting",
+NM_SETTING_IP4_CONFIG_SETTING_NAME);
+nm_connection_add_setting (connection, NM_SETTING (s_ip4));
+
+g_object_set (s_ip4,
+              NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_DISABLED,
+              NULL);
+
+/* IP6 setting */
+s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new ();
+ASSERT (s_ip6 != NULL,
+        "bridge-component-write", "failed to allocate new %s setting",
+        NM_SETTING_IP6_CONFIG_SETTING_NAME);
+nm_connection_add_setting (connection, NM_SETTING (s_ip6));
+
+g_object_set (s_ip6,
+              NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_IGNORE,
+              NM_SETTING_IP6_CONFIG_MAY_FAIL, TRUE,
+              NULL);
+
+ASSERT (nm_connection_verify (connection, &amp;amp;error) == TRUE,
+        "bridge-component-write", "failed to verify connection: %s",
+        (error &amp;amp;&amp;amp; error-&amp;gt;message) ? error-&amp;gt;message : "(unknown)");
+
+/* Save the ifcfg */
+success = writer_new_connection (connection,
+                                 TEST_SCRATCH_DIR "/network-scripts/",
+                                 &amp;amp;testfile,
+                                 &amp;amp;error);
+ASSERT (success == TRUE,
+        "bridge-component-write", "failed to write connection to disk: %s",
+        (error &amp;amp;&amp;amp; error-&amp;gt;message) ? error-&amp;gt;message : "(unknown)");
+
+ASSERT (testfile != NULL,
+        "bridge-component-write", "didn't get ifcfg file path back after writing connection");
+
+/* re-read the connection for comparison */
+reread = connection_from_file (testfile,
+                               NULL,
+                               TYPE_ETHERNET,
+                               NULL,
+                               &amp;amp;unmanaged,
+                               &amp;amp;keyfile,
+                               &amp;amp;routefile,
+                               &amp;amp;route6file,
+                               &amp;amp;error,
+                               &amp;amp;ignore_error);
+unlink (testfile);
+
+ASSERT (reread != NULL,
+        "bridge-component-write-reread", "failed to read %s: %s", testfile, error-&amp;gt;message);
+
+ASSERT (nm_connection_verify (reread, &amp;amp;error),
+        "bridge-component-write-reread-verify", "failed to verify %s: %s", testfile, error-&amp;gt;message);
+
+ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE,
+        "bridge-component-write", "written and re-read connection weren't the same.");
+
+if (route6file)
+unlink (route6file);
+
+g_free (testfile);
+g_free (unmanaged);
+g_free (keyfile);
+g_free (routefile);
+g_free (route6file);
+g_object_unref (connection);
+g_object_unref (reread);
+}
+
 #define TEST_IFCFG_VLAN_INTERFACE TEST_IFCFG_DIR"/network-scripts/ifcfg-test-vlan-interface"
 
 static void
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -13056,13 +13200,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int main (int argc, char **argv)
 
 test_read_bridge_main ();
 test_write_bridge_main ();
+test_read_bridge_component ();
+test_write_bridge_component ();
 
 /* Stuff we expect to fail for now */
 test_write_wired_pppoe ();
 test_write_vpn ();
 test_write_mobile_broadband (TRUE);
 test_write_mobile_broadband (FALSE);
-test_read_bridge_component ();
 
 base = g_path_get_basename (argv[0]);
 fprintf (stdout, "%s: SUCCESS\n", base);
diff --git a/src/settings/plugins/ifcfg-rh/utils.c b/src/settings/plugins/ifcfg-rh/utils.c
index 0b7ddf3..156f90a 100644
--- a/src/settings/plugins/ifcfg-rh/utils.c
+++ b/src/settings/plugins/ifcfg-rh/utils.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -451,8 +451,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; utils_disabling_ip4_config_allowed (NMConnection *connection)
 s_con = nm_connection_get_setting_connection (connection);
 g_assert (s_con);
 
-/* bonding slaves are allowed to have no ip configuration */
-if (nm_setting_connection_is_slave_type (s_con, NM_SETTING_BOND_SETTING_NAME))
+/* bonding and bridging slaves are allowed to have no ip configuration */
+if (   nm_setting_connection_is_slave_type (s_con, NM_SETTING_BOND_SETTING_NAME)
+    || nm_setting_connection_is_slave_type (s_con, NM_SETTING_BRIDGE_SETTING_NAME))
 return TRUE;
 
 return FALSE;
diff --git a/src/settings/plugins/ifcfg-rh/writer.c b/src/settings/plugins/ifcfg-rh/writer.c
index 7e4ce77..b6b1371 100644
--- a/src/settings/plugins/ifcfg-rh/writer.c
+++ b/src/settings/plugins/ifcfg-rh/writer.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1345,6 +1345,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; write_connection_setting (NMSettingConnection *s_con, shvarFile *ifcfg)
 if (master) {
 if (nm_setting_connection_is_slave_type (s_con, NM_SETTING_BOND_SETTING_NAME))
 svSetValue (ifcfg, "MASTER", master, FALSE);
+else if (nm_setting_connection_is_slave_type (s_con, NM_SETTING_BRIDGE_SETTING_NAME))
+svSetValue (ifcfg, "BRIDGE", master, FALSE);
 }
 }
 
&lt;/pre&gt;</description>
    <dc:creator>Thomas Graf</dc:creator>
    <dc:date>2012-05-23T14:19:28</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21209">
    <title>[PATCH 3/6] bridge: add bridging settings class (NMSettingBridge)</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21209</link>
    <description>&lt;pre&gt;Support to read/write bridging ifcfg files and convert it to
a NMSettingBridge. Test case included as well.
---
 docs/api/generate-settings-spec.c                  |    2 +
 docs/libnm-util/libnm-util-docs.sgml               |    1 +
 libnm-util/Makefile.am                             |    2 +
 libnm-util/libnm-util.ver                          |   13 +
 libnm-util/nm-connection.c                         |   25 +-
 libnm-util/nm-connection.h                         |    2 +
 libnm-util/nm-setting-bridge.c                     |  557 ++++++++++++++++++++
 libnm-util/nm-setting-bridge.h                     |  105 ++++
 src/settings/plugins/ifcfg-rh/reader.c             |  134 +++++-
 .../plugins/ifcfg-rh/tests/test-ifcfg-rh.c         |  172 ++++++-
 src/settings/plugins/ifcfg-rh/writer.c             |   53 ++
 11 files changed, 1060 insertions(+), 6 deletions(-)
 create mode 100644 libnm-util/nm-setting-bridge.c
 create mode 100644 libnm-util/nm-setting-bridge.h

diff --git a/docs/api/generate-settings-spec.c b/docs/api/generate-settings-spec.c
index 7a540e3..9363c45 100644
--- a/docs/api/generate-settings-spec.c
+++ b/docs/api/generate-settings-spec.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -48,6 +48,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;nm-setting-wireless-security.h&amp;gt;
 #include &amp;lt;nm-setting-infiniband.h&amp;gt;
 #include &amp;lt;nm-setting-bond.h&amp;gt;
+#include &amp;lt;nm-setting-bridge.h&amp;gt;
 #include &amp;lt;nm-setting-vlan.h&amp;gt;
 
 #include &amp;lt;nm-utils.h&amp;gt;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -58,6 +59,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static SettingNewFunc funcs[] = {
 nm_setting_802_1x_new,
 nm_setting_bluetooth_new,
 nm_setting_bond_new,
+nm_setting_bridge_new,
 nm_setting_cdma_new,
 nm_setting_connection_new,
 nm_setting_gsm_new,
diff --git a/docs/libnm-util/libnm-util-docs.sgml b/docs/libnm-util/libnm-util-docs.sgml
index f389971..6c6fffc 100644
--- a/docs/libnm-util/libnm-util-docs.sgml
+++ b/docs/libnm-util/libnm-util-docs.sgml
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -28,6 +28,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
     &amp;lt;xi:include href="xml/nm-setting-gsm.xml"/&amp;gt;
     &amp;lt;xi:include href="xml/nm-setting-wimax.xml"/&amp;gt;
     &amp;lt;xi:include href="xml/nm-setting-bond.xml"/&amp;gt;
+    &amp;lt;xi:include href="xml/nm-setting-bridge.xml"/&amp;gt;
     &amp;lt;xi:include href="xml/nm-setting-infiniband.xml"/&amp;gt;
     &amp;lt;xi:include href="xml/nm-setting-vlan.xml"/&amp;gt;
     &amp;lt;xi:include href="xml/nm-setting-olpc-mesh.xml"/&amp;gt;
diff --git a/libnm-util/Makefile.am b/libnm-util/Makefile.am
index c4ea954..3bca469 100644
--- a/libnm-util/Makefile.am
+++ b/libnm-util/Makefile.am
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -19,6 +19,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libnm_util_include_HEADERS = \
 nm-setting-adsl.h\
 nm-setting-bluetooth.h\
 nm-setting-bond.h\
+nm-setting-bridge.h\
 nm-setting-connection.h\
 nm-setting-infiniband.h\
 nm-setting-ip4-config.h\
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -53,6 +54,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libnm_util_la_csources = \
 nm-setting-adsl.c\
 nm-setting-bluetooth.c\
 nm-setting-bond.c\
+nm-setting-bridge.c\
 nm-setting-connection.c\
 nm-setting-infiniband.c\
 nm-setting-ip4-config.c\
diff --git a/libnm-util/libnm-util.ver b/libnm-util/libnm-util.ver
index d8850a5..5a5916b 100644
--- a/libnm-util/libnm-util.ver
+++ b/libnm-util/libnm-util.ver
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -18,6 +18,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; global:
 nm_connection_get_setting_adsl;
 nm_connection_get_setting_bluetooth;
 nm_connection_get_setting_bond;
+nm_connection_get_setting_bridge;
 nm_connection_get_setting_by_name;
 nm_connection_get_setting_cdma;
 nm_connection_get_setting_connection;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -201,6 +202,18 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; global:
 nm_setting_bond_get_valid_options;
 nm_setting_bond_new;
 nm_setting_bond_remove_option;
+nm_setting_bridge_add_option;
+nm_setting_bridge_error_get_type;
+nm_setting_bridge_error_quark;
+nm_setting_bridge_get_interface_name;
+nm_setting_bridge_get_num_options;
+nm_setting_bridge_get_option;
+nm_setting_bridge_get_option_by_name;
+nm_setting_bridge_get_option_default;
+nm_setting_bridge_get_type;
+nm_setting_bridge_get_valid_options;
+nm_setting_bridge_new;
+nm_setting_bridge_remove_option;
 nm_setting_cdma_error_get_type;
 nm_setting_cdma_error_quark;
 nm_setting_cdma_get_number;
diff --git a/libnm-util/nm-connection.c b/libnm-util/nm-connection.c
index 80a4996..818f56e 100644
--- a/libnm-util/nm-connection.c
+++ b/libnm-util/nm-connection.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -48,6 +48,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include "nm-setting-vpn.h"
 #include "nm-setting-olpc-mesh.h"
 #include "nm-setting-bond.h"
+#include "nm-setting-bridge.h"
 #include "nm-setting-vlan.h"
 #include "nm-setting-serial.h"
 #include "nm-setting-gsm.h"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -118,7 +119,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static guint signals[LAST_SIGNAL] = { 0 };
 
 static GHashTable *registered_settings = NULL;
 
-#define DEFAULT_MAP_SIZE 20
+#define DEFAULT_MAP_SIZE 21
 
 static struct SettingInfo {
 const char *name;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -230,6 +231,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; register_default_settings (void)
                       NM_SETTING_BOND_ERROR,
                       1, TRUE);
 
+register_one_setting (NM_SETTING_BRIDGE_SETTING_NAME,
+                      NM_TYPE_SETTING_BRIDGE,
+                      NM_SETTING_BRIDGE_ERROR,
+                      1, TRUE);
+
 register_one_setting (NM_SETTING_INFINIBAND_SETTING_NAME,
                       NM_TYPE_SETTING_INFINIBAND,
                       NM_SETTING_INFINIBAND_ERROR,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1410,6 +1416,23 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nm_connection_get_setting_bond (NMConnection *connection)
 }
 
 /**
+ * nm_connection_get_setting_bridge:
+ * &amp;lt; at &amp;gt;connection: the #NMConnection
+ *
+ * A shortcut to return any #NMSettingBridge the connection might contain.
+ *
+ * Returns: (transfer none): an #NMSettingBridge if the connection contains one, otherwise NULL
+ **/
+NMSettingBridge *
+nm_connection_get_setting_bridge (NMConnection *connection)
+{
+g_return_val_if_fail (connection != NULL, NULL);
+g_return_val_if_fail (NM_IS_CONNECTION (connection), NULL);
+
+return (NMSettingBridge *) nm_connection_get_setting (connection, NM_TYPE_SETTING_BRIDGE);
+}
+
+/**
  * nm_connection_get_setting_cdma:
  * &amp;lt; at &amp;gt;connection: the #NMConnection
  *
diff --git a/libnm-util/nm-connection.h b/libnm-util/nm-connection.h
index ca29d15..bb4017a 100644
--- a/libnm-util/nm-connection.h
+++ b/libnm-util/nm-connection.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -33,6 +33,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;nm-setting-8021x.h&amp;gt;
 #include &amp;lt;nm-setting-bluetooth.h&amp;gt;
 #include &amp;lt;nm-setting-bond.h&amp;gt;
+#include &amp;lt;nm-setting-bridge.h&amp;gt;
 #include &amp;lt;nm-setting-cdma.h&amp;gt;
 #include &amp;lt;nm-setting-connection.h&amp;gt;
 #include &amp;lt;nm-setting-gsm.h&amp;gt;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -188,6 +189,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; const char *  nm_connection_get_id        (NMConnection *connection);
 NMSetting8021x *           nm_connection_get_setting_802_1x            (NMConnection *connection);
 NMSettingBluetooth *       nm_connection_get_setting_bluetooth         (NMConnection *connection);
 NMSettingBond *            nm_connection_get_setting_bond              (NMConnection *connection);
+NMSettingBridge *          nm_connection_get_setting_bridge            (NMConnection *connection);
 NMSettingCdma *            nm_connection_get_setting_cdma              (NMConnection *connection);
 NMSettingConnection *      nm_connection_get_setting_connection        (NMConnection *connection);
 NMSettingGsm *             nm_connection_get_setting_gsm               (NMConnection *connection);
diff --git a/libnm-util/nm-setting-bridge.c b/libnm-util/nm-setting-bridge.c
new file mode 100644
index 0000000..01adfce
--- /dev/null
+++ b/libnm-util/nm-setting-bridge.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,557 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+
+/*
+ * Thomas Graf &amp;lt;tgraf&amp;lt; at &amp;gt;redhat.com&amp;gt;
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * (C) Copyright 2011 - 2012 Red Hat, Inc.
+ */
+
+#include &amp;lt;string.h&amp;gt;
+#include &amp;lt;ctype.h&amp;gt;
+#include &amp;lt;stdlib.h&amp;gt;
+#include &amp;lt;dbus/dbus-glib.h&amp;gt;
+
+#include "nm-setting-bridge.h"
+#include "nm-param-spec-specialized.h"
+#include "nm-utils.h"
+#include "nm-utils-private.h"
+#include "nm-dbus-glib-types.h"
+
+/**
+ * SECTION:nm-setting-bridge
+ * &amp;lt; at &amp;gt;short_description: Describes connection properties for bridges
+ * &amp;lt; at &amp;gt;include: nm-setting-bridge.h
+ *
+ * The #NMSettingBridge object is a #NMSetting subclass that describes properties
+ * necessary for bridging connections.
+ **/
+
+/**
+ * nm_setting_bridge_error_quark:
+ *
+ * Registers an error quark for #NMSettingBridge if necessary.
+ *
+ * Returns: the error quark used for #NMSettingBridge errors.
+ **/
+GQuark
+nm_setting_bridge_error_quark (void)
+{
+static GQuark quark;
+
+if (G_UNLIKELY (!quark))
+quark = g_quark_from_static_string ("nm-setting-bridge-error-quark");
+return quark;
+}
+
+
+G_DEFINE_TYPE (NMSettingBridge, nm_setting_bridge, NM_TYPE_SETTING)
+
+#define NM_SETTING_BRIDGE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_BRIDGE, NMSettingBridgePrivate))
+
+typedef struct {
+char *interface_name;
+GHashTable *options;
+} NMSettingBridgePrivate;
+
+enum {
+PROP_0,
+PROP_INTERFACE_NAME,
+PROP_OPTIONS,
+LAST_PROP
+};
+
+typedef struct {
+const char *opt;
+const char *val;
+} BridgeDefault;
+
+static const BridgeDefault defaults[] = {
+{ NM_SETTING_BRIDGE_OPTION_STP,           "yes" },
+{ NM_SETTING_BRIDGE_OPTION_PRIO,          NULL  },
+{ NM_SETTING_BRIDGE_OPTION_FORWARD_DELAY, "15"  },
+{ NM_SETTING_BRIDGE_OPTION_HELLO_TIME,    "2"   },
+{ NM_SETTING_BRIDGE_OPTION_MAX_AGE,       "20"  },
+{ NM_SETTING_BRIDGE_OPTION_PATH_COST,     NULL  },
+{ NM_SETTING_BRIDGE_OPTION_PORT_PRIO,     NULL  },
+{ NM_SETTING_BRIDGE_OPTION_AGEING_TIME,   NULL  },
+};
+
+/**
+ * nm_setting_bridge_new:
+ *
+ * Creates a new #NMSettingBridge object with default values.
+ *
+ * Returns: (transfer full): the new empty #NMSettingBridge object
+ **/
+NMSetting *
+nm_setting_bridge_new (void)
+{
+return (NMSetting *) g_object_new (NM_TYPE_SETTING_BRIDGE, NULL);
+}
+
+/**
+ * nm_setting_bridge_get_interface_name
+ * &amp;lt; at &amp;gt;setting: the #NMSettingBridge
+ *
+ * Returns: the #NMSettingBridge:interface-name property of the setting
+ **/
+const char *
+nm_setting_bridge_get_interface_name (NMSettingBridge *setting)
+{
+g_return_val_if_fail (NM_IS_SETTING_BRIDGE (setting), 0);
+
+return NM_SETTING_BRIDGE_GET_PRIVATE (setting)-&amp;gt;interface_name;
+}
+
+/**
+ * nm_setting_bridge_get_num_options:
+ * &amp;lt; at &amp;gt;setting: the #NMSettingBridge
+ *
+ * Returns the number of options that should be set for this bridge when it
+ * is activated. This can be used to retrieve each option individually
+ * using nm_setting_bridge_get_option().
+ *
+ * Returns: the number of bridging options
+ **/
+guint32
+nm_setting_bridge_get_num_options (NMSettingBridge *setting)
+{
+g_return_val_if_fail (NM_IS_SETTING_BRIDGE (setting), 0);
+
+return g_hash_table_size (NM_SETTING_BRIDGE_GET_PRIVATE (setting)-&amp;gt;options);
+}
+
+/**
+ * nm_setting_bridge_get_option:
+ * &amp;lt; at &amp;gt;setting: the #NMSettingBridge
+ * &amp;lt; at &amp;gt;idx: index of the desired option, from 0 to
+ * nm_setting_bridge_get_num_options() - 1
+ * &amp;lt; at &amp;gt;out_name: (out): on return, the name of the bridging option; this
+ * value is owned by the setting and should not be modified
+ * &amp;lt; at &amp;gt;out_value: (out): on return, the value of the name of the bridging
+ * option; this value is owned by the setting and should not be modified
+ *
+ * Given an index, return the value of the bridging option at that index.  Indexes
+ * are *not* guaranteed to be static across modifications to options done by
+ * nm_setting_bridge_add_option() and nm_setting_bridge_remove_option(),
+ * and should not be used to refer to options except for short periods of time
+ * such as during option iteration.
+ *
+ * Returns: %TRUE on success if the index was valid and an option was found,
+ * %FALSE if the index was invalid (ie, greater than the number of options
+ * currently held by the setting)
+ **/
+gboolean
+nm_setting_bridge_get_option (NMSettingBridge *setting,
+                              guint32 idx,
+                              const char **out_name,
+                              const char **out_value)
+{
+NMSettingBridgePrivate *priv;
+GList *keys;
+const char *_key = NULL, *_value = NULL;
+
+g_return_val_if_fail (NM_IS_SETTING_BRIDGE (setting), FALSE);
+
+priv = NM_SETTING_BRIDGE_GET_PRIVATE (setting);
+
+if (idx &amp;gt;= nm_setting_bridge_get_num_options (setting))
+return FALSE;
+
+keys = g_hash_table_get_keys (priv-&amp;gt;options);
+_key = g_list_nth_data (keys, idx);
+_value = g_hash_table_lookup (priv-&amp;gt;options, _key);
+
+if (out_name)
+*out_name = _key;
+if (out_value)
+*out_value = _value;
+
+g_list_free (keys);
+return TRUE;
+}
+
+static gboolean
+validate_option_name (const char *name)
+{
+guint i;
+
+g_return_val_if_fail (name != NULL, FALSE);
+g_return_val_if_fail (name[0] != '\0', FALSE);
+
+for (i = 0; i &amp;lt; G_N_ELEMENTS (defaults); i++) {
+if (g_strcmp0 (defaults[i].opt, name) == 0)
+return TRUE;
+}
+return FALSE;
+}
+
+/**
+ * nm_setting_bridge_get_option_by_name:
+ * &amp;lt; at &amp;gt;setting: the #NMSettingBridge
+ * &amp;lt; at &amp;gt;name: the option name for which to retrieve the value
+ *
+ * Returns the value associated with the briding option specified by
+ * &amp;lt; at &amp;gt;name, if it exists.
+ *
+ * Returns: the value, or %NULL if the key/value pair was never added to the
+ * setting; the value is owned by the setting and must not be modified
+ **/
+const char *
+nm_setting_bridge_get_option_by_name (NMSettingBridge *setting,
+                                      const char *name)
+{
+g_return_val_if_fail (NM_IS_SETTING_BRIDGE (setting), NULL);
+g_return_val_if_fail (validate_option_name (name), NULL);
+
+return g_hash_table_lookup (NM_SETTING_BRIDGE_GET_PRIVATE (setting)-&amp;gt;options, name);
+}
+
+/**
+ * nm_setting_bridge_add_option:
+ * &amp;lt; at &amp;gt;setting: the #NMSettingBridge
+ * &amp;lt; at &amp;gt;name: name for the option
+ * &amp;lt; at &amp;gt;value: value for the option
+ *
+ * Add an option to the table.  The option is compared to an internal list
+ * of allowed options.  Option names may contain only alphanumeric characters
+ * (ie [a-zA-Z0-9]).  Adding a new name replaces any existing name/value pair
+ * that may already exist.
+ *
+ * Returns: %TRUE if the option was valid and was added to the internal option
+ * list, %FALSE if it was not.
+ **/
+gboolean nm_setting_bridge_add_option (NMSettingBridge *setting,
+                                       const char *name,
+                                       const char *value)
+{
+NMSettingBridgePrivate *priv;
+size_t value_len;
+
+g_return_val_if_fail (NM_IS_SETTING_BRIDGE (setting), FALSE);
+g_return_val_if_fail (validate_option_name (name), FALSE);
+g_return_val_if_fail (value != NULL, FALSE);
+
+priv = NM_SETTING_BRIDGE_GET_PRIVATE (setting);
+
+value_len = strlen (value);
+g_return_val_if_fail (value_len &amp;gt; 0 &amp;amp;&amp;amp; value_len &amp;lt; 200, FALSE);
+
+g_hash_table_insert (priv-&amp;gt;options, g_strdup (name), g_strdup (value));
+
+return TRUE;
+}
+
+/**
+ * nm_setting_bridge_remove_option:
+ * &amp;lt; at &amp;gt;setting: the #NMSettingBridge
+ * &amp;lt; at &amp;gt;name: name of the option to remove
+ *
+ * Remove the briding option referenced by &amp;lt; at &amp;gt;name from the internal option
+ * list.
+ *
+ * Returns: %TRUE if the option was found and removed from the internal option
+ * list, %FALSE if it was not.
+ **/
+gboolean
+nm_setting_bridge_remove_option (NMSettingBridge *setting,
+                                 const char *name)
+{
+g_return_val_if_fail (NM_IS_SETTING_BRIDGE (setting), FALSE);
+g_return_val_if_fail (validate_option_name (name), FALSE);
+
+return g_hash_table_remove (NM_SETTING_BRIDGE_GET_PRIVATE (setting)-&amp;gt;options, name);
+}
+
+/**
+ * nm_setting_bridge_get_valid_options:
+ * &amp;lt; at &amp;gt;setting: the #NMSettingBridge
+ *
+ * Returns a list of valid bridge options.
+ *
+ * Returns: a NULL-terminated array of strings of valid bridge options.
+ **/
+const char **
+nm_setting_bridge_get_valid_options  (NMSettingBridge *setting)
+{
+static const char *array[G_N_ELEMENTS (defaults) + 1] = { NULL };
+int i;
+
+/* initialize the array once */
+if (G_UNLIKELY (array[0] == NULL)) {
+for (i = 0; i &amp;lt; G_N_ELEMENTS (defaults); i++)
+array[i] = defaults[i].opt;
+array[i] = NULL;
+}
+return array;
+}
+
+/**
+ * nm_setting_bridge_get_option_default:
+ * &amp;lt; at &amp;gt;setting: the #NMSettingBridge
+ * &amp;lt; at &amp;gt;name: the name of the option
+ *
+ * Returns: the value of the bridge option if not overridden by an entry in
+ *   the #NMSettingBridge:options property.
+ **/
+const char *
+nm_setting_bridge_get_option_default (NMSettingBridge *setting, const char *name)
+{
+guint i;
+
+g_return_val_if_fail (NM_IS_SETTING_BRIDGE (setting), NULL);
+g_return_val_if_fail (validate_option_name (name), NULL);
+
+for (i = 0; i &amp;lt; G_N_ELEMENTS (defaults); i++) {
+if (g_strcmp0 (defaults[i].opt, name) == 0)
+return defaults[i].val;
+}
+/* Any option that passes validate_option_name() should also be found in defaults */
+g_assert_not_reached ();
+}
+
+static gboolean
+check_range (NMSettingBridgePrivate *priv, const char *option, int min, int max,
+             GError **error)
+{
+const char *value;
+
+value = g_hash_table_lookup (priv-&amp;gt;options, option);
+if (value) {
+int ival = atoi(value);
+if (ival &amp;lt; min || ival &amp;gt; max) {
+g_set_error (error,
+             NM_SETTING_BRIDGE_ERROR,
+             NM_SETTING_BRIDGE_ERROR_INVALID_OPTION,
+ option);
+return FALSE;
+}
+}
+
+return TRUE;
+}
+
+static gboolean
+verify (NMSetting *setting, GSList *all_settings, GError **error)
+{
+NMSettingBridgePrivate *priv = NM_SETTING_BRIDGE_GET_PRIVATE (setting);
+GHashTableIter iter;
+const char *key, *value;
+const char *valid_stp[] = { "on", "off",
+                            "yes", "no",
+                            NULL };
+
+if (!priv-&amp;gt;interface_name || !strlen(priv-&amp;gt;interface_name)) {
+g_set_error (error,
+             NM_SETTING_BRIDGE_ERROR,
+             NM_SETTING_BRIDGE_ERROR_MISSING_PROPERTY,
+             NM_SETTING_BRIDGE_INTERFACE_NAME);
+return FALSE;
+}
+
+if (!nm_utils_iface_valid_name (priv-&amp;gt;interface_name)) {
+g_set_error (error,
+             NM_SETTING_BRIDGE_ERROR,
+             NM_SETTING_BRIDGE_ERROR_INVALID_PROPERTY,
+             NM_SETTING_BRIDGE_INTERFACE_NAME);
+return FALSE;
+}
+
+g_hash_table_iter_init (&amp;amp;iter, priv-&amp;gt;options);
+while (g_hash_table_iter_next (&amp;amp;iter, (gpointer) &amp;amp;key, (gpointer) &amp;amp;value)) {
+if (   !validate_option_name (key)
+    || !value[0]
+    || (strlen (value) &amp;gt; 200)
+    || strchr (value, ' ')) {
+g_set_error_literal (error,
+                     NM_SETTING_BRIDGE_ERROR,
+                     NM_SETTING_BRIDGE_ERROR_INVALID_OPTION,
+                     key);
+return FALSE;
+}
+}
+
+value = g_hash_table_lookup (priv-&amp;gt;options, NM_SETTING_BRIDGE_OPTION_STP);
+if (!_nm_utils_string_in_list (value, valid_stp)) {
+g_set_error (error,
+             NM_SETTING_BRIDGE_ERROR,
+             NM_SETTING_BRIDGE_ERROR_INVALID_OPTION,
+             NM_SETTING_BRIDGE_OPTION_STP);
+return FALSE;
+}
+
+/* As documented in the kernel source and brctl(8) */
+if (!check_range (priv, NM_SETTING_BRIDGE_OPTION_PRIO, 0, 65535, error))
+return FALSE;
+
+/* IEEE 802.1D-1998 limits */
+if (!check_range (priv, NM_SETTING_BRIDGE_OPTION_FORWARD_DELAY, 0, 30, error))
+return FALSE;
+
+/* IEEE 802.1D-1998 limits */
+if (!check_range (priv, NM_SETTING_BRIDGE_OPTION_HELLO_TIME, 1, 10, error))
+return FALSE;
+
+/* IEEE 802.1D-1998 limits */
+if (!check_range (priv, NM_SETTING_BRIDGE_OPTION_MAX_AGE, 6, 40, error))
+return FALSE;
+
+/* IEEE 802.1D-1998 limits */
+if (!check_range (priv, NM_SETTING_BRIDGE_OPTION_PATH_COST, 1, 65535, error))
+return FALSE;
+
+if (!check_range (priv, NM_SETTING_BRIDGE_OPTION_AGEING_TIME, 0, INT_MAX, error))
+return FALSE;
+
+/* enforce 8bit int */
+if (!check_range (priv, NM_SETTING_BRIDGE_OPTION_PORT_PRIO, 0, 255, error))
+return FALSE;
+
+return TRUE;
+}
+
+static const char *
+get_virtual_iface_name (NMSetting *setting)
+{
+NMSettingBridge *self = NM_SETTING_BRIDGE (setting);
+
+return nm_setting_bridge_get_interface_name (self);
+}
+
+static void
+nm_setting_bridge_init (NMSettingBridge *setting)
+{
+NMSettingBridgePrivate *priv = NM_SETTING_BRIDGE_GET_PRIVATE (setting);
+
+g_object_set (setting, NM_SETTING_NAME, NM_SETTING_BRIDGE_SETTING_NAME,
+              NULL);
+
+priv-&amp;gt;options = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+
+/* Default values: */
+nm_setting_bridge_add_option (setting, NM_SETTING_BRIDGE_OPTION_STP, "yes");
+}
+
+static void
+finalize (GObject *object)
+{
+NMSettingBridgePrivate *priv = NM_SETTING_BRIDGE_GET_PRIVATE (object);
+
+g_free (priv-&amp;gt;interface_name);
+g_hash_table_destroy (priv-&amp;gt;options);
+
+G_OBJECT_CLASS (nm_setting_bridge_parent_class)-&amp;gt;finalize (object);
+}
+
+static void
+copy_hash (gpointer key, gpointer value, gpointer user_data)
+{
+g_hash_table_insert ((GHashTable *) user_data, g_strdup (key), g_strdup (value));
+}
+
+static void
+set_property (GObject *object, guint prop_id,
+              const GValue *value, GParamSpec *pspec)
+{
+NMSettingBridgePrivate *priv = NM_SETTING_BRIDGE_GET_PRIVATE (object);
+GHashTable *new_hash;
+
+switch (prop_id) {
+case PROP_INTERFACE_NAME:
+priv-&amp;gt;interface_name = g_value_dup_string (value);
+break;
+case PROP_OPTIONS:
+/* Must make a deep copy of the hash table here... */
+g_hash_table_remove_all (priv-&amp;gt;options);
+new_hash = g_value_get_boxed (value);
+if (new_hash)
+g_hash_table_foreach (new_hash, copy_hash, priv-&amp;gt;options);
+break;
+default:
+G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+break;
+}
+}
+
+static void
+get_property (GObject *object, guint prop_id,
+              GValue *value, GParamSpec *pspec)
+{
+NMSettingBridgePrivate *priv = NM_SETTING_BRIDGE_GET_PRIVATE (object);
+NMSettingBridge *setting = NM_SETTING_BRIDGE (object);
+
+switch (prop_id) {
+case PROP_INTERFACE_NAME:
+g_value_set_string (value, nm_setting_bridge_get_interface_name (setting));
+break;
+case PROP_OPTIONS:
+g_value_set_boxed (value, priv-&amp;gt;options);
+        break;
+default:
+G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+break;
+}
+}
+
+static void
+nm_setting_bridge_class_init (NMSettingBridgeClass *setting_class)
+{
+GObjectClass *object_class = G_OBJECT_CLASS (setting_class);
+NMSettingClass *parent_class = NM_SETTING_CLASS (setting_class);
+
+g_type_class_add_private (setting_class, sizeof (NMSettingBridgePrivate));
+
+/* virtual methods */
+object_class-&amp;gt;set_property = set_property;
+object_class-&amp;gt;get_property = get_property;
+object_class-&amp;gt;finalize     = finalize;
+parent_class-&amp;gt;verify       = verify;
+parent_class-&amp;gt;get_virtual_iface_name = get_virtual_iface_name;
+
+/* Properties */
+/**
+ * NMSettingBridge:interface-name:
+ *
+ * The name of the virtual in-kernel briding network interface
+ **/
+g_object_class_install_property
+(object_class, PROP_INTERFACE_NAME,
+ g_param_spec_string (NM_SETTING_BRIDGE_INTERFACE_NAME,
+                      "InterfaceName",
+                      "The name of the virtual in-kernel bridging network interface",
+                      NULL,
+                      G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));
+
+/**
+ * NMSettingBridge:options:
+ *
+ * Dictionary of key/value pairs of briding options.  Both keys
+ * and values must be strings. Option names must contain only
+ * alphanumeric characters (ie, [a-zA-Z0-9]).
+ **/
+ g_object_class_install_property
+ (object_class, PROP_OPTIONS,
+ _nm_param_spec_specialized (NM_SETTING_BRIDGE_OPTIONS,
+                             "Options",
+                             "Dictionary of key/value pairs of bridging "
+                             "options.  Both keys and values must be "
+                             "strings.  Option names must contain only "
+                             "alphanumeric characters (ie, [a-zA-Z0-9]).",
+                             DBUS_TYPE_G_MAP_OF_STRING,
+                             G_PARAM_READWRITE | NM_SETTING_PARAM_SERIALIZE));
+}
diff --git a/libnm-util/nm-setting-bridge.h b/libnm-util/nm-setting-bridge.h
new file mode 100644
index 0000000..24121de
--- /dev/null
+++ b/libnm-util/nm-setting-bridge.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,105 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+
+/*
+ * Thomas Graf &amp;lt;tgraf&amp;lt; at &amp;gt;redhat.com&amp;gt;
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * (C) Copyright 2011 - 2012 Red Hat, Inc.
+ */
+
+#ifndef NM_SETTING_BRIDGE_H
+#define NM_SETTING_BRIDGE_H
+
+#include &amp;lt;nm-setting.h&amp;gt;
+
+G_BEGIN_DECLS
+
+#define NM_TYPE_SETTING_BRIDGE            (nm_setting_bridge_get_type ())
+#define NM_SETTING_BRIDGE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_SETTING_BRIDGE, NMSettingBridge))
+#define NM_SETTING_BRIDGE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_SETTING_BRIDGE, NMSettingBridgeClass))
+#define NM_IS_SETTING_BRIDGE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_SETTING_BRIDGE))
+#define NM_IS_SETTING_BRIDGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NM_TYPE_SETTING_BRIDGE))
+#define NM_SETTING_BRIDGE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_SETTING_BRIDGE, NMSettingBridgeClass))
+
+#define NM_SETTING_BRIDGE_SETTING_NAME "bridge"
+
+/**
+ * NMSettingBridgeError:
+ */
+typedef enum {
+NM_SETTING_BRIDGE_ERROR_UNKNOWN = 0,      /*&amp;lt; nick=UnknownError &amp;gt;*/
+NM_SETTING_BRIDGE_ERROR_INVALID_PROPERTY, /*&amp;lt; nick=InvalidProperty &amp;gt;*/
+NM_SETTING_BRIDGE_ERROR_MISSING_PROPERTY, /*&amp;lt; nick=MissingProperty &amp;gt;*/
+NM_SETTING_BRIDGE_ERROR_INVALID_OPTION,   /*&amp;lt; nick=InvalidOption &amp;gt;*/
+NM_SETTING_BRIDGE_ERROR_MISSING_OPTION,   /*&amp;lt; nick=MissingOption &amp;gt;*/
+} NMSettingBridgeError;
+
+#define NM_SETTING_BRIDGE_ERROR nm_setting_bridge_error_quark ()
+GQuark nm_setting_bridge_error_quark (void);
+
+#define NM_SETTING_BRIDGE_INTERFACE_NAME "interface-name"
+#define NM_SETTING_BRIDGE_OPTIONS "options"
+
+/* Valid options for the 'options' property */
+#define NM_SETTING_BRIDGE_OPTION_STP           "stp"
+#define NM_SETTING_BRIDGE_OPTION_PRIO          "prio"
+#define NM_SETTING_BRIDGE_OPTION_FORWARD_DELAY "forward_delay"
+#define NM_SETTING_BRIDGE_OPTION_HELLO_TIME    "hello_time"
+#define NM_SETTING_BRIDGE_OPTION_MAX_AGE       "max_age"
+#define NM_SETTING_BRIDGE_OPTION_PATH_COST     "path_cost"
+#define NM_SETTING_BRIDGE_OPTION_PORT_PRIO     "port_prio"
+#define NM_SETTING_BRIDGE_OPTION_AGEING_TIME   "ageing_time"
+
+typedef struct {
+NMSetting parent;
+} NMSettingBridge;
+
+typedef struct {
+NMSettingClass parent;
+
+/* Padding for future expansion */
+void (*_reserved1) (void);
+void (*_reserved2) (void);
+void (*_reserved3) (void);
+void (*_reserved4) (void);
+} NMSettingBridgeClass;
+
+GType nm_setting_bridge_get_type (void);
+
+NMSetting *  nm_setting_bridge_new                (void);
+const char * nm_setting_bridge_get_interface_name (NMSettingBridge *setting);
+guint32      nm_setting_bridge_get_num_options    (NMSettingBridge *setting);
+gboolean     nm_setting_bridge_get_option         (NMSettingBridge *setting,
+                                                   guint32 idx,
+                                                   const char **out_name,
+                                                   const char **out_value);
+const char * nm_setting_bridge_get_option_by_name (NMSettingBridge *setting,
+                                                   const char *name);
+gboolean     nm_setting_bridge_add_option         (NMSettingBridge *setting,
+                                                   const char *name,
+                                                   const char *value);
+gboolean     nm_setting_bridge_remove_option      (NMSettingBridge *setting,
+                                                   const char *name);
+
+const char **nm_setting_bridge_get_valid_options  (NMSettingBridge *setting);
+
+const char * nm_setting_bridge_get_option_default (NMSettingBridge *setting,
+                                                   const char *name);
+
+G_END_DECLS
+
+#endif /* NM_SETTING_BRIDGE_H */
diff --git a/src/settings/plugins/ifcfg-rh/reader.c b/src/settings/plugins/ifcfg-rh/reader.c
index a2b08e4..8d490bf 100644
--- a/src/settings/plugins/ifcfg-rh/reader.c
+++ b/src/settings/plugins/ifcfg-rh/reader.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -45,6 +45,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;nm-setting-wireless.h&amp;gt;
 #include &amp;lt;nm-setting-8021x.h&amp;gt;
 #include &amp;lt;nm-setting-bond.h&amp;gt;
+#include &amp;lt;nm-setting-bridge.h&amp;gt;
 #include &amp;lt;nm-utils.h&amp;gt;
 
 #include "wifi-utils.h"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3672,6 +3673,136 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; bond_connection_from_ifcfg (const char *file,
 return connection;
 }
 
+static void
+handle_bridge_option (NMSettingBridge *s_bridge,
+                      const char *key,
+                      const char *value)
+{
+if (!nm_setting_bridge_add_option (s_bridge, key, value))
+PLUGIN_WARN (IFCFG_PLUGIN_NAME, "    warning: invalid bridging option '%s'", key);
+}
+
+static NMSetting *
+make_bridge_setting (shvarFile *ifcfg,
+                     const char *file,
+                     gboolean nm_controlled,
+                     char **unmanaged,
+                     GError **error)
+{
+NMSettingBridge *s_bridge;
+char *value;
+
+s_bridge = NM_SETTING_BRIDGE (nm_setting_bridge_new ());
+
+value = svGetValue (ifcfg, "DEVICE", FALSE);
+if (!value || !strlen (value)) {
+g_set_error (error, IFCFG_PLUGIN_ERROR, 0, "mandatory DEVICE keyword missing");
+goto error;
+}
+
+g_object_set (s_bridge, NM_SETTING_BRIDGE_INTERFACE_NAME, value, NULL);
+g_free (value);
+
+value = svGetValue (ifcfg, "STP", FALSE);
+if (value) {
+nm_setting_bridge_add_option (s_bridge, NM_SETTING_BRIDGE_OPTION_STP, value);
+g_free (value);
+}
+
+value = svGetValue (ifcfg, "DELAY", FALSE);
+if (value) {
+nm_setting_bridge_add_option (s_bridge, NM_SETTING_BRIDGE_OPTION_FORWARD_DELAY, value);
+g_free (value);
+}
+
+value = svGetValue (ifcfg, "BRIDGING_OPTS", FALSE);
+if (value) {
+char **items, **iter;
+
+items = g_strsplit_set (value, " ", -1);
+for (iter = items; iter &amp;amp;&amp;amp; *iter; iter++) {
+if (strlen (*iter)) {
+char **keys, *key, *val;
+
+keys = g_strsplit_set (*iter, "=", 2);
+if (keys &amp;amp;&amp;amp; *keys) {
+key = *keys;
+val = *(keys + 1);
+if (val &amp;amp;&amp;amp; strlen(key) &amp;amp;&amp;amp; strlen(val))
+handle_bridge_option (s_bridge, key, val);
+}
+
+g_strfreev (keys);
+}
+}
+g_free (value);
+g_strfreev (items);
+}
+
+return (NMSetting *) s_bridge;
+
+error:
+g_object_unref (s_bridge);
+return NULL;
+}
+
+static NMConnection *
+bridge_connection_from_ifcfg (const char *file,
+                              shvarFile *ifcfg,
+                              gboolean nm_controlled,
+                              char **unmanaged,
+                              GError **error)
+{
+NMConnection *connection = NULL;
+NMSetting *con_setting = NULL;
+NMSetting *bridge_setting = NULL;
+NMSetting *wired_setting = NULL;
+NMSetting8021x *s_8021x = NULL;
+
+g_return_val_if_fail (file != NULL, NULL);
+g_return_val_if_fail (ifcfg != NULL, NULL);
+
+connection = nm_connection_new ();
+if (!connection) {
+g_set_error (error, IFCFG_PLUGIN_ERROR, 0,
+             "Failed to allocate new connection for %s.", file);
+return NULL;
+}
+
+con_setting = make_connection_setting (file, ifcfg, NM_SETTING_BRIDGE_SETTING_NAME, NULL, _("Bridge"));
+if (!con_setting) {
+g_set_error (error, IFCFG_PLUGIN_ERROR, 0,
+             "Failed to create connection setting.");
+g_object_unref (connection);
+return NULL;
+}
+nm_connection_add_setting (connection, con_setting);
+
+bridge_setting = make_bridge_setting (ifcfg, file, nm_controlled, unmanaged, error);
+if (!bridge_setting) {
+g_object_unref (connection);
+return NULL;
+}
+nm_connection_add_setting (connection, bridge_setting);
+
+wired_setting = make_wired_setting (ifcfg, file, nm_controlled, unmanaged, &amp;amp;s_8021x, error);
+if (!wired_setting) {
+g_object_unref (connection);
+return NULL;
+}
+nm_connection_add_setting (connection, wired_setting);
+
+if (s_8021x)
+nm_connection_add_setting (connection, NM_SETTING (s_8021x));
+
+if (!nm_connection_verify (connection, error)) {
+g_object_unref (connection);
+return NULL;
+}
+
+return connection;
+}
+
 static gboolean
 is_bond_device (const char *name, shvarFile *parsed)
 {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4048,8 +4179,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; connection_from_file (const char *filename,
 else if (!strcasecmp (type, TYPE_VLAN))
 connection = vlan_connection_from_ifcfg (filename, parsed, nm_controlled, unmanaged, &amp;amp;error);
 else if (!strcasecmp (type, TYPE_BRIDGE))
-g_set_error (&amp;amp;error, IFCFG_PLUGIN_ERROR, 0,
-             "Bridge connections are not yet supported");
+connection = bridge_connection_from_ifcfg (filename, parsed, nm_controlled, unmanaged, &amp;amp;error);
 else {
 g_set_error (&amp;amp;error, IFCFG_PLUGIN_ERROR, 0,
              "Unknown connection type '%s'", type);
diff --git a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
index 62882a7..fa25dce 100644
--- a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
+++ b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -11784,6 +11784,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void
 test_read_bridge_main (void)
 {
 NMConnection *connection;
+NMSettingBridge *s_bridge;
 char *unmanaged = NULL;
 char *keyfile = NULL;
 char *routefile = NULL;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -11801,13 +11802,176 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; test_read_bridge_main (void)
                                    &amp;amp;route6file,
                                    &amp;amp;error,
                                    &amp;amp;ignore_error);
-ASSERT (connection == NULL,
-        "bridge-main-read", "unexpected success reading %s", TEST_IFCFG_BRIDGE_MAIN);
+ASSERT (connection != NULL,
+        "bridge-main-read", "unexpected failure reading %s", TEST_IFCFG_BRIDGE_MAIN);
+
+ASSERT (nm_connection_verify (connection, &amp;amp;error),
+        "bridge-main-read", "failed to verify %s: %s", TEST_IFCFG_BRIDGE_MAIN, error-&amp;gt;message);
+
+/* ===== Bridging SETTING ===== */
+
+s_bridge = nm_connection_get_setting_bridge (connection);
+ASSERT (s_bridge != NULL,
+        "bridge-main", "failed to verify %s: missing %s setting",
+        TEST_IFCFG_BRIDGE_MAIN,
+        NM_SETTING_BRIDGE_SETTING_NAME);
+
+ASSERT (g_strcmp0 (nm_setting_bridge_get_interface_name (s_bridge), "br0") == 0,
+        "bridge-main", "failed to verify %s: DEVICE=%s does not match br0",
+        TEST_IFCFG_BRIDGE_MAIN, nm_setting_bridge_get_interface_name (s_bridge));
+
+ASSERT (g_strcmp0 (nm_setting_bridge_get_option_by_name (s_bridge, NM_SETTING_BRIDGE_OPTION_FORWARD_DELAY), "0") == 0,
+        "bridge-main", "failed to verify %s: DELAY=%s does not match 0",
+        TEST_IFCFG_BRIDGE_MAIN, nm_setting_bridge_get_option_by_name (s_bridge, NM_SETTING_BRIDGE_OPTION_FORWARD_DELAY));
+
+ASSERT (g_strcmp0 (nm_setting_bridge_get_option_by_name (s_bridge, NM_SETTING_BRIDGE_OPTION_STP), "on") == 0,
+        "bridge-main", "failed to verify %s: STP=%s does not match \"on\"",
+        TEST_IFCFG_BRIDGE_MAIN, nm_setting_bridge_get_option_by_name (s_bridge, NM_SETTING_BRIDGE_OPTION_STP));
+
+g_free (unmanaged);
+g_free (keyfile);
+g_free (routefile);
+g_free (route6file);
+g_object_unref (connection);
+}
+
+static void
+test_write_bridge_main (void)
+{
+NMConnection *connection;
+NMConnection *reread;
+NMSettingConnection *s_con;
+NMSettingBridge *s_bridge;
+NMSettingIP4Config *s_ip4;
+NMSettingIP6Config *s_ip6;
+NMSettingWired *s_wired;
+char *uuid;
+const guint32 ip1 = htonl (0x01010103);
+const guint32 gw = htonl (0x01010101);
+const guint32 prefix = 24;
+NMIP4Address *addr;
+gboolean success;
+GError *error = NULL;
+char *testfile = NULL;
+char *unmanaged = NULL;
+char *keyfile = NULL;
+char *routefile = NULL;
+char *route6file = NULL;
+gboolean ignore_error = FALSE;
+
+connection = nm_connection_new ();
+ASSERT (connection != NULL,
+        "bridge-main-write", "failed to allocate new connection");
+
+/* Connection setting */
+s_con = (NMSettingConnection *) nm_setting_connection_new ();
+ASSERT (s_con != NULL,
+        "bridge-main-write", "failed to allocate new %s setting",
+        NM_SETTING_CONNECTION_SETTING_NAME);
+nm_connection_add_setting (connection, NM_SETTING (s_con));
+
+uuid = nm_utils_uuid_generate ();
+g_object_set (s_con,
+              NM_SETTING_CONNECTION_ID, "Test Write Bridge Main",
+              NM_SETTING_CONNECTION_UUID, uuid,
+              NM_SETTING_CONNECTION_AUTOCONNECT, TRUE,
+              NM_SETTING_CONNECTION_TYPE, NM_SETTING_BRIDGE_SETTING_NAME,
+              NULL);
+g_free (uuid);
+
+/* Wired setting */
+s_wired = (NMSettingWired *) nm_setting_wired_new ();
+ASSERT (s_wired != NULL,
+        "bridge-main-write", "failed to allocate new %s setting",
+        NM_SETTING_WIRED_SETTING_NAME);
+nm_connection_add_setting (connection, NM_SETTING (s_wired));
+
+/* bridge setting */
+s_bridge = (NMSettingBridge *) nm_setting_bridge_new ();
+ASSERT (s_bridge != NULL,
+        "bridge-main-write", "failed to allocate new %s setting",
+        NM_SETTING_BRIDGE_SETTING_NAME);
+nm_connection_add_setting (connection, NM_SETTING (s_bridge));
+
+g_object_set (s_bridge,
+              NM_SETTING_BRIDGE_INTERFACE_NAME, "br0",
+              NULL);
+
+/* IP4 setting */
+s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new ();
+ASSERT (s_ip4 != NULL,
+"bridge-main-write", "failed to allocate new %s setting",
+NM_SETTING_IP4_CONFIG_SETTING_NAME);
+nm_connection_add_setting (connection, NM_SETTING (s_ip4));
+
+g_object_set (s_ip4,
+              NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_MANUAL,
+              NM_SETTING_IP4_CONFIG_MAY_FAIL, TRUE,
+              NULL);
+
+addr = nm_ip4_address_new ();
+nm_ip4_address_set_address (addr, ip1);
+nm_ip4_address_set_prefix (addr, prefix);
+nm_ip4_address_set_gateway (addr, gw);
+nm_setting_ip4_config_add_address (s_ip4, addr);
+nm_ip4_address_unref (addr);
+
+/* IP6 setting */
+s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new ();
+ASSERT (s_ip6 != NULL,
+        "bridge-main-write", "failed to allocate new %s setting",
+        NM_SETTING_IP6_CONFIG_SETTING_NAME);
+nm_connection_add_setting (connection, NM_SETTING (s_ip6));
+
+g_object_set (s_ip6,
+              NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_IGNORE,
+              NULL);
+
+ASSERT (nm_connection_verify (connection, &amp;amp;error) == TRUE,
+        "bridge-main-write", "failed to verify connection: %s",
+        (error &amp;amp;&amp;amp; error-&amp;gt;message) ? error-&amp;gt;message : "(unknown)");
+
+/* Save the ifcfg */
+success = writer_new_connection (connection,
+                                 TEST_SCRATCH_DIR "/network-scripts/",
+                                 &amp;amp;testfile,
+                                 &amp;amp;error);
+ASSERT (success == TRUE,
+        "bridge-main-write", "failed to write connection to disk: %s",
+        (error &amp;amp;&amp;amp; error-&amp;gt;message) ? error-&amp;gt;message : "(unknown)");
+
+ASSERT (testfile != NULL,
+        "bridge-main-write", "didn't get ifcfg file path back after writing connection");
+
+/* re-read the connection for comparison */
+reread = connection_from_file (testfile,
+                               NULL,
+                               TYPE_BRIDGE,
+                               NULL,
+                               &amp;amp;unmanaged,
+                               &amp;amp;keyfile,
+                               &amp;amp;routefile,
+                               &amp;amp;route6file,
+                               &amp;amp;error,
+                               &amp;amp;ignore_error);
+unlink (testfile);
+
+ASSERT (reread != NULL,
+        "bridge-main-write-reread", "failed to read %s: %s", testfile, error-&amp;gt;message);
+
+ASSERT (nm_connection_verify (reread, &amp;amp;error),
+        "bridge-main-write-reread-verify", "failed to verify %s: %s", testfile, error-&amp;gt;message);
 
+ASSERT (nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT) == TRUE,
+        "bridge-main-write", "written and re-read connection weren't the same.");
+
+g_free (testfile);
 g_free (unmanaged);
 g_free (keyfile);
 g_free (routefile);
 g_free (route6file);
+g_object_unref (connection);
+g_object_unref (reread);
 }
 
 #define TEST_IFCFG_BRIDGE_COMPONENT TEST_IFCFG_DIR"/network-scripts/ifcfg-test-bridge-component"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -12890,12 +13054,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int main (int argc, char **argv)
 test_write_bond_main ();
 test_write_bond_slave ();
 
+test_read_bridge_main ();
+test_write_bridge_main ();
+
 /* Stuff we expect to fail for now */
 test_write_wired_pppoe ();
 test_write_vpn ();
 test_write_mobile_broadband (TRUE);
 test_write_mobile_broadband (FALSE);
-test_read_bridge_main ();
 test_read_bridge_component ();
 
 base = g_path_get_basename (argv[0]);
diff --git a/src/settings/plugins/ifcfg-rh/writer.c b/src/settings/plugins/ifcfg-rh/writer.c
index a431a30..7e4ce77 100644
--- a/src/settings/plugins/ifcfg-rh/writer.c
+++ b/src/settings/plugins/ifcfg-rh/writer.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1254,6 +1254,56 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; write_bonding_setting (NMConnection *connection, shvarFile *ifcfg, GError **erro
 return TRUE;
 }
 
+static gboolean
+write_bridge_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
+{
+NMSettingBridge *s_bridge;
+const char *iface;
+guint32 i, num_opts;
+
+s_bridge = nm_connection_get_setting_bridge (connection);
+if (!s_bridge) {
+g_set_error (error, IFCFG_PLUGIN_ERROR, 0,
+             "Missing '%s' setting", NM_SETTING_BRIDGE_SETTING_NAME);
+return FALSE;
+}
+
+iface = nm_setting_bridge_get_interface_name (s_bridge);
+if (!iface) {
+g_set_error (error, IFCFG_PLUGIN_ERROR, 0, "Missing interface name");
+return FALSE;
+}
+
+svSetValue (ifcfg, "DEVICE", iface, FALSE);
+svSetValue (ifcfg, "BRIDGING_OPTS", NULL, FALSE);
+
+num_opts = nm_setting_bridge_get_num_options (s_bridge);
+if (num_opts &amp;gt; 0) {
+GString *str = g_string_sized_new (64);
+
+for (i = 0; i &amp;lt; nm_setting_bridge_get_num_options (s_bridge); i++) {
+const char *key, *value;
+
+if (!nm_setting_bridge_get_option (s_bridge, i, &amp;amp;key, &amp;amp;value))
+continue;
+
+if (str-&amp;gt;len)
+g_string_append_c (str, ' ');
+
+g_string_append_printf (str, "%s=%s", key, value);
+}
+
+if (str-&amp;gt;len)
+svSetValue (ifcfg, "BRIDGING_OPTS", str-&amp;gt;str, FALSE);
+
+g_string_free (str, TRUE);
+}
+
+svSetValue (ifcfg, "TYPE", TYPE_BRIDGE, FALSE);
+
+return TRUE;
+}
+
 static void
 write_connection_setting (NMSettingConnection *s_con, shvarFile *ifcfg)
 {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1998,6 +2048,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; write_connection (NMConnection *connection,
 } else if (!strcmp (type, NM_SETTING_BOND_SETTING_NAME)) {
 if (!write_bonding_setting (connection, ifcfg, error))
 goto out;
+} else if (!strcmp (type, NM_SETTING_BRIDGE_SETTING_NAME)) {
+if (!write_bridge_setting (connection, ifcfg, error))
+goto out;
 } else {
 g_set_error (error, IFCFG_PLUGIN_ERROR, 0,
              "Can't write connection type '%s'", type);
&lt;/pre&gt;</description>
    <dc:creator>Thomas Graf</dc:creator>
    <dc:date>2012-05-23T14:19:27</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21208">
    <title>[PATCH 1/6] utils: Move dev_valid_name() to libnm-utils and make itpublic</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21208</link>
    <description>&lt;pre&gt;The bridging code needs it as well.
---
 libnm-util/libnm-util.ver    |    1 +
 libnm-util/nm-setting-bond.c |   27 +--------------------------
 libnm-util/nm-utils.c        |   30 ++++++++++++++++++++++++++++++
 libnm-util/nm-utils.h        |    2 ++
 4 files changed, 34 insertions(+), 26 deletions(-)

diff --git a/libnm-util/libnm-util.ver b/libnm-util/libnm-util.ver
index 9eec05c..d8850a5 100644
--- a/libnm-util/libnm-util.ver
+++ b/libnm-util/libnm-util.ver
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -499,6 +499,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; global:
 nm_utils_hwaddr_len;
 nm_utils_hwaddr_ntoa;
 nm_utils_hwaddr_type;
+nm_utils_iface_valid_name;
 nm_utils_init;
 nm_utils_ip4_addresses_from_gvalue;
 nm_utils_ip4_addresses_to_gvalue;
diff --git a/libnm-util/nm-setting-bond.c b/libnm-util/nm-setting-bond.c
index fe874ab..fef6870 100644
--- a/libnm-util/nm-setting-bond.c
+++ b/libnm-util/nm-setting-bond.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -329,31 +329,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nm_setting_bond_get_option_default (NMSettingBond *setting, const char *name)
 g_assert_not_reached ();
 }
 
-/*
- * This function is a 1:1 copy of the kernel's
- * dev_valid_name() in net/core/dev.c
- */
-static gboolean
-dev_valid_name(const char *name)
-{
-if (*name == '\0')
-return FALSE;
-
-if (strlen (name) &amp;gt;= 16)
-return FALSE;
-
-if (!strcmp (name, ".") || !strcmp (name, ".."))
-return FALSE;
-
-while (*name) {
-if (*name == '/' || isspace (*name))
-return FALSE;
-name++;
-}
-
-return TRUE;
-}
-
 static gint
 find_setting_by_name (gconstpointer a, gconstpointer b)
 {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -388,7 +363,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; verify (NMSetting *setting, GSList *all_settings, GError **error)
 return FALSE;
 }
 
-if (!dev_valid_name (priv-&amp;gt;interface_name)) {
+if (!nm_utils_iface_valid_name (priv-&amp;gt;interface_name)) {
 g_set_error (error,
              NM_SETTING_BOND_ERROR,
              NM_SETTING_BOND_ERROR_INVALID_PROPERTY,
diff --git a/libnm-util/nm-utils.c b/libnm-util/nm-utils.c
index a880620..c0d398b 100644
--- a/libnm-util/nm-utils.c
+++ b/libnm-util/nm-utils.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2568,3 +2568,33 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nm_utils_hwaddr_ntoa (gconstpointer addr, int type)
 
 return g_string_free (out, FALSE);
 }
+
+/**
+ * nm_utils_iface_name_valid:
+ * &amp;lt; at &amp;gt;name: Name of interface
+ *
+ * This function is a 1:1 copy of the kernel's interface validation
+ * function in net/core/dev.c.
+ *
+ * Returns: %TRUE if interface name is valid, otherwise %FALSE is returned.
+ */
+gboolean
+nm_utils_iface_valid_name(const char *name)
+{
+if (*name == '\0')
+return FALSE;
+
+if (strlen (name) &amp;gt;= 16)
+return FALSE;
+
+if (!strcmp (name, ".") || !strcmp (name, ".."))
+return FALSE;
+
+while (*name) {
+if (*name == '/' || isspace (*name))
+return FALSE;
+name++;
+}
+
+return TRUE;
+}
diff --git a/libnm-util/nm-utils.h b/libnm-util/nm-utils.h
index 7bc536a..8f91283 100644
--- a/libnm-util/nm-utils.h
+++ b/libnm-util/nm-utils.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -134,6 +134,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; char       *nm_utils_hwaddr_ntoa  (gconstpointer addr, int type);
 GByteArray *nm_utils_hwaddr_atoba (const char *asc, int type);
 guint8     *nm_utils_hwaddr_aton  (const char *asc, int type, gpointer buffer);
 
+gboolean    nm_utils_iface_valid_name(const char *name);
+
 G_END_DECLS
 
 #endif /* NM_UTILS_H */
&lt;/pre&gt;</description>
    <dc:creator>Thomas Graf</dc:creator>
    <dc:date>2012-05-23T14:19:25</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21207">
    <title>[PATCH 0/6] Bridging support v2</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21207</link>
    <description>&lt;pre&gt;This series of patches adds bridging support to NM.

Thomas Graf (6):
  utils: Move dev_valid_name() to libnm-utils and make it public
  bridge: API to to create, delete, attach, and detach bridges
  bridge: add bridging settings class (NMSettingBridge)
  bridge: support bridging slaves
  bridge: add bridge device type
  bridge: nmcli support

 cli/src/connections.c                              |   17 +-
 cli/src/devices.c                                  |    5 +
 cli/src/settings.c                                 |   48 ++
 cli/src/settings.h                                 |    2 +
 docs/api/generate-settings-spec.c                  |    2 +
 docs/libnm-glib/libnm-glib-docs.xml                |    1 +
 docs/libnm-glib/libnm-glib.types                   |    2 +
 docs/libnm-util/libnm-util-docs.sgml               |    1 +
 include/NetworkManager.h                           |    4 +
 introspection/Makefile.am                          |    1 +
 introspection/all.xml.in                           |    1 +
 introspection/nm-device-bridge.xml                 |   27 +
 introspection/nm-device.xml                        |    5 +
 libnm-glib/Makefile.am                             |    2 +
 libnm-glib/libnm-glib.ver                          |    6 +
 libnm-glib/nm-device-bridge.c                      |  301 +++++++++++
 libnm-glib/nm-device-bridge.h                      |   82 +++
 libnm-glib/nm-device.c                             |    3 +
 libnm-util/Makefile.am                             |    2 +
 libnm-util/libnm-util.ver                          |   14 +
 libnm-util/nm-connection.c                         |   25 +-
 libnm-util/nm-connection.h                         |    2 +
 libnm-util/nm-setting-bond.c                       |   27 +-
 libnm-util/nm-setting-bridge.c                     |  557 +++++++++++++++++++
 libnm-util/nm-setting-bridge.h                     |  105 ++++
 libnm-util/nm-utils.c                              |   30 +
 libnm-util/nm-utils.h                              |    2 +
 src/Makefile.am                                    |    6 +
 src/nm-device-bridge.c                             |  560 ++++++++++++++++++++
 src/nm-device-bridge.h                             |   65 +++
 src/nm-device-wired.c                              |    3 +
 src/nm-manager.c                                   |   28 +-
 src/nm-system.c                                    |  247 +++++++++-
 src/nm-system.h                                    |   13 +
 src/nm-udev-manager.c                              |    3 +
 src/settings/plugins/ifcfg-rh/reader.c             |  186 ++++++--
 .../plugins/ifcfg-rh/tests/test-ifcfg-rh.c         |  327 +++++++++++-
 src/settings/plugins/ifcfg-rh/utils.c              |    5 +-
 src/settings/plugins/ifcfg-rh/writer.c             |   55 ++
 39 files changed, 2695 insertions(+), 77 deletions(-)
 create mode 100644 introspection/nm-device-bridge.xml
 create mode 100644 libnm-glib/nm-device-bridge.c
 create mode 100644 libnm-glib/nm-device-bridge.h
 create mode 100644 libnm-util/nm-setting-bridge.c
 create mode 100644 libnm-util/nm-setting-bridge.h
 create mode 100644 src/nm-device-bridge.c
 create mode 100644 src/nm-device-bridge.h

&lt;/pre&gt;</description>
    <dc:creator>Thomas Graf</dc:creator>
    <dc:date>2012-05-23T14:19:24</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21206">
    <title>Re: Little white window SECRET</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21206</link>
    <description>&lt;pre&gt;On Wed, 23 May 2012 13:02:03 +0200
Timothy Murphy &amp;lt;gayleard&amp;lt; at &amp;gt;eircom.net&amp;gt; wrote:


Ah, I didn't realise that you couldn't, I thought you were saying that
the window was very small and didn't allow you to see what was entered.


I am not currently using NM but back in the dim and distant past I used
it for WiFi on my laptop, I did occasionally get a similar window, I
think it was used by the GNOME key storage program rather than directly
by NM. 


See above.


I'd guess that this could be a problem in your wireless driver rather
than directly in NM itself, but I'm not the best person to ask about it.

Perhaps someone else could comment if you add in a bit more information
about which hardware you have and which driver versions you're using. I
think it's known that some wireless drivers are less solid than others,
but it's probably also AP dependent too. WiFi standards are, well, not
actually standards at all, the WiFi Alliance testing is more like a set
of interoperability tests with 'gold' APs and hence it's possible for
specific problems to fall through the cracks.

&lt;/pre&gt;</description>
    <dc:creator>Brian Morrison</dc:creator>
    <dc:date>2012-05-23T11:31:21</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21205">
    <title>Re: Little white window SECRET</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21205</link>
    <description>&lt;pre&gt;

As I said, it does not allow any input into the window,
even if I click "show password",
which is in fact the only thing I can do in the window.

Do you see this "Secret" window?
If so, does it accept input?

Who provides this window, incidentally?
Is it NM?

I'm afraid this incident highlighted for me
how bad NM is when it doesn't work.
(I emphasize that this is only 5% or less of the time.
95% of the time it works fine.)
But when it is not working, I get out my Android phone
(Samsung Galaxy S2) and see if that has a network connection,
so I'll know if the fault actually lies with my WiFi router,
or with dhcpd on my server.
(These are rarely the case.)

The point is, I've never known my Android to have any problems
with WiFi, anywhere.
It lists the access points it sees (as does NM),
and if I click on one it asks me for the password
if that is required, and that is it.
I can go from one location to another,
and it seems to have no problem,
while NM appears to find a change of location very challenging.


&lt;/pre&gt;</description>
    <dc:creator>Timothy Murphy</dc:creator>
    <dc:date>2012-05-23T11:02:03</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21204">
    <title>Re: Little white window SECRET</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21204</link>
    <description>&lt;pre&gt;On Wed, 23 May 2012 11:02 +0200
Timothy Murphy &amp;lt;gayleard&amp;lt; at &amp;gt;eircom.net&amp;gt; wrote:


It wants the password, or phrase, for your wireless connection whether
it is Wi-Fi or some other flavour.

You should be able to type in the field, it may not show the whole
string entered, but it should be there. Cut and paste would probably
help if you have your password/phrase/key somewhere accessible.

&lt;/pre&gt;</description>
    <dc:creator>Brian Morrison</dc:creator>
    <dc:date>2012-05-23T09:12:43</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21203">
    <title>Little white window SECRET</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21203</link>
    <description>&lt;pre&gt;Every now and again NM stops working,
and a little window appears in the middle of the screen
(in fact in the middle of all virtual desktops
on my Fedora-16/KDE laptop).
The window is entitled Secret,
and it has a space to enter a password.
But in fact it is impossible to write in the space provided,
even if one clicks "Show password".

I don't know what password is wanted, even if I could enter one.

I find the only thing to do when this happens is to reboot the laptop.
NM usually works OK after the reboot.

&lt;/pre&gt;</description>
    <dc:creator>Timothy Murphy</dc:creator>
    <dc:date>2012-05-23T09:02:00</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21202">
    <title>Best way to keep alive mobile connection + openvpn?</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21202</link>
    <description>&lt;pre&gt;
Dear Guys,

We try to make a system, based on debian testing with MM 0.5.2, which is able to provide the following:

 
it connect automatically to the mobile broadband network using ZTE or Huawei usb modems,
 
it reconnects in any case, when the modem or the provider drops the connection,
 
it builds up the openvpn channel via the mobile broadband when ppp0 interface is available and working well
 
it can make it without any user interaction
 
note: there is gnome, but lightdm, fluxbox, policykit, network-manager, modem-manager, nm-applet, nmcli. Minimal system.


As I can see at this moment, we have to write our own control script, which controls at this moment only the 2G/3G connection:

 
checks gsm device is ready/available
 
checks the wwan is on or turn it on
 
nm-applet setup contains auto-connect for the connection


As in the last few days I found some strange issues with the stability of the mobile connection, I wonder how others solve this kind of problem?

Do you have any solution, recommendation? Of course the solution should be bullet-proof :)

Here is our basic control script. The mobile connection has Autoconnect checked.

Any better idea?

Thanks, István

------------ script runs as user with nopasswd sudo or as root -----------------

#!/bin/bash
gsm_status_log="/tmp/1wire_fs/gsm_status"

# What The Fuck indicator: 0: ok, 1: connecting, 2: turn on wwan, 3: there is no modem or unknown statu
WTF=0 
SLEEPTIME=45 # 45 seconds between checks

while [ TRUE ] ; do
GSMSTATUS=`nmcli dev status | grep gsm | gawk '{print $3}'`
DATUM=`date +"%Y-%m-%d %H:%M"`
# echo "GSM_STATUS: $GSMSTATUS"

if [ "$GSMSTATUS" == "kapcsolódva" ]; then
if [ $WTF -ne 0 ] ; then
echo "$DATUM - GSM kapcsolódva." &amp;gt;&amp;gt; /var/log/gsm_status.log
WTF=0
fi
echo "UP" &amp;gt; $gsm_status_log
elif [ "$GSMSTATUS" == "kapcsolódás" ]; then
if [ $WTF -ne 1 ]; then
echo "$DATUM - GSM kapcsolódás folyamatban." &amp;gt;&amp;gt; /var/log/gsm_status.log
WTF=1
fi
echo "CONNECTING" &amp;gt; $gsm_status_log
else
if [ "$GSMSTATUS" == "leválasztva" ]; then
if [ $WTF -ne 2 ]; then
echo "$DATUM - GSM kapcsolódás indul." &amp;gt;&amp;gt; /var/log/gsm_status.log
WTF=2
fi
echo "RECONNECT" &amp;gt; $gsm_status_log
if [ `whoami` == "root" ]; then
nmcli nm wwan on
else
sudo nmcli nm wwan on
fi
else
 if [ $WTF -ne 3 ]; then
 echo "$DATUM - GSM nem található, vagy ismeretlen státusz: $GSMSTATUS" &amp;gt;&amp;gt; /var/log/gsm_status.log
 WTF=3
 fi
 echo "UNKNOWN" &amp;gt; $gsm_status_log
 fi
fi
sleep $SLEEPTIME
done

_______________________________________________
networkmanager-list mailing list
networkmanager-list&amp;lt; at &amp;gt;gnome.org
http://mail.gnome.org/mailman/listinfo/networkmanager-list
&lt;/pre&gt;</description>
    <dc:creator>PongráczI</dc:creator>
    <dc:date>2012-05-23T07:16:02</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21201">
    <title>Re: [PATCH v2] Re: Change the state of iface from disconnected toconnected using nmcli</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21201</link>
    <description>&lt;pre&gt;
Commited:
e0329b4 libnm-glib: add 'autoconnect' property for devices
d1cbeeb core: authenticate Set() D-Bus call for NMDevice "Autoconnect" 
property
6d9338f core: add "Autoconnect" property to NMDevice

Jirka
&lt;/pre&gt;</description>
    <dc:creator>Jirka Klimes</dc:creator>
    <dc:date>2012-05-22T16:46:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21200">
    <title>[PATCH 4/4] Add switches to the Applet menu</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21200</link>
    <description>&lt;pre&gt;this is actually quite a bigger change, we factorize a bit of code adding the menu to the function (though it's not strictly necesary), we give a callback to toggle the device state,
note that the callback is unimplemented for bt and wired.

Signed-off-by: Niv Sardi &amp;lt;xaiki&amp;lt; at &amp;gt;debian.org&amp;gt;
---
 src/applet-device-bt.c    |   12 +++--
 src/applet-device-cdma.c  |   15 ++++--
 src/applet-device-gsm.c   |   15 ++++--
 src/applet-device-wifi.c  |   16 ++++--
 src/applet-device-wimax.c |   15 ++++--
 src/applet-device-wired.c |   12 +++--
 src/applet.c              |  119 +++++++++++++++++++++++++++++++++++++++++++--
 src/applet.h              |   10 ++--
 8 files changed, 178 insertions(+), 36 deletions(-)

diff --git a/src/applet-device-bt.c b/src/applet-device-bt.c
index 4f1cac2..cbba5b9 100644
--- a/src/applet-device-bt.c
+++ b/src/applet-device-bt.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -129,6 +129,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; add_connection_items (NMDevice *device,
 }
 }
 
+static gboolean
+bt_toggle (GtkWidget *sw, gpointer user_data)
+{
+g_log (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, "UNIMPLEMENTED: toggle_bt\n");
+}
+
 static void
 bt_add_menu_item (NMDevice *device,
                   guint32 n_devices,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -152,11 +158,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; bt_add_menu_item (NMDevice *device,
 g_assert (text);
 }
 
-item = applet_menu_item_create_device_item_helper (device, applet, text);
-
-gtk_widget_set_sensitive (item, FALSE);
-gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-gtk_widget_show (item);
+applet_menu_item_add_device_item_helper (device, applet, menu, bt_toggle, text);
 
 if (g_slist_length (connections))
 add_connection_items (device, connections, active, ADD_ACTIVE, menu, applet);
diff --git a/src/applet-device-cdma.c b/src/applet-device-cdma.c
index 4c18131..f22ba03 100644
--- a/src/applet-device-cdma.c
+++ b/src/applet-device-cdma.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -316,6 +316,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; cdma_act_to_mb_act (CdmaDeviceInfo *info)
 return MB_TECH_UNKNOWN;
 }
 
+static gboolean
+cdma_toggle (GtkWidget *widget, gpointer user_data)
+{
+NMApplet *applet = (NMApplet *) user_data;
+gboolean enabled = ! nm_client_wwan_get_enabled (applet-&amp;gt;nm_client);
+nm_client_wwan_set_enabled (applet-&amp;gt;nm_client, enabled);
+
+return TRUE;
+}
+
 static void
 cdma_add_menu_item (NMDevice *device,
                     guint32 n_devices,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -347,10 +357,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; cdma_add_menu_item (NMDevice *device,
 text = g_strdup (_("Mobile Broadband"));
 }
 
-item = applet_menu_item_create_device_item_helper (device, applet, text);
-gtk_widget_set_sensitive (item, FALSE);
-gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-gtk_widget_show (item);
+applet_menu_item_add_device_item_helper (device, applet, menu, cdma_toggle, text);
 g_free (text);
 
 /* Add the active connection */
diff --git a/src/applet-device-gsm.c b/src/applet-device-gsm.c
index d0da7e4..d5297e9 100644
--- a/src/applet-device-gsm.c
+++ b/src/applet-device-gsm.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -363,6 +363,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gsm_act_to_mb_act (GsmDeviceInfo *info)
 return MB_TECH_GSM;
 }
 
+static gboolean
+gsm_toggle (GtkWidget *widget, gpointer user_data)
+{
+NMApplet *applet = (NMApplet *) user_data;
+gboolean enabled = ! nm_client_wwan_get_enabled (applet-&amp;gt;nm_client);
+nm_client_wwan_set_enabled (applet-&amp;gt;nm_client, enabled);
+
+return TRUE;
+}
+
 static void
 gsm_add_menu_item (NMDevice *device,
                    guint32 n_devices,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -394,10 +404,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; gsm_add_menu_item (NMDevice *device,
 text = g_strdup (_("Mobile Broadband"));
 }
 
-item = applet_menu_item_create_device_item_helper (device, applet, text);
-gtk_widget_set_sensitive (item, FALSE);
-gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-gtk_widget_show (item);
+applet_menu_item_add_device_item_helper (device, applet, menu, gsm_toggle, text);
 g_free (text);
 
 /* Add the active connection */
diff --git a/src/applet-device-wifi.c b/src/applet-device-wifi.c
index ff0e374..7284f46 100644
--- a/src/applet-device-wifi.c
+++ b/src/applet-device-wifi.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -758,6 +758,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sort_toplevel (gconstpointer tmpa, gconstpointer tmpb)
 return sort_by_name (a, b);
 }
 
+static gboolean
+wifi_toggle (GtkWidget *sw, gpointer user_data)
+{
+NMApplet *applet = (NMApplet *) user_data;
+gboolean enabled = ! nm_client_wireless_get_enabled (applet-&amp;gt;nm_client);
+nm_client_wireless_set_enabled (applet-&amp;gt;nm_client, enabled);
+
+return TRUE;
+}
+
 static void
 wireless_add_menu_item (NMDevice *device,
                         guint32 n_devices,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -795,13 +805,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; wireless_add_menu_item (NMDevice *device,
 } else
 text = g_strdup (ngettext ("Wireless Network", "Wireless Networks", aps ? aps-&amp;gt;len : 0));
 
-widget = applet_menu_item_create_device_item_helper (device, applet, text);
+applet_menu_item_add_device_item_helper (device, applet, menu, wifi_toggle, text);
 g_free (text);
 
-gtk_widget_set_sensitive (widget, FALSE);
-gtk_menu_shell_append (GTK_MENU_SHELL (menu), widget);
-gtk_widget_show (widget);
-
 all = applet_get_all_connections (applet);
 connections = nm_device_filter_connections (device, all);
 g_slist_free (all);
diff --git a/src/applet-device-wimax.c b/src/applet-device-wimax.c
index 042653a..994bf5c 100644
--- a/src/applet-device-wimax.c
+++ b/src/applet-device-wimax.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -202,6 +202,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sort_nsps (gconstpointer a, gconstpointer b)
 return g_strcmp0 (name_a, name_b);
 }
 
+static gboolean
+wimax_toggle (GtkWidget *widget, gpointer user_data)
+{
+NMApplet *applet = (NMApplet *) user_data;
+gboolean enabled = ! nm_client_wimax_get_enabled (applet-&amp;gt;nm_client);
+nm_client_wimax_set_enabled (applet-&amp;gt;nm_client, enabled);
+
+return TRUE;
+}
+
 static void
 wimax_add_menu_item (NMDevice *device,
                      guint32 n_devices,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -233,10 +243,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; wimax_add_menu_item (NMDevice *device,
 text = g_strdup (_("WiMAX Mobile Broadband"));
 }
 
-item = applet_menu_item_create_device_item_helper (device, applet, text);
-gtk_widget_set_sensitive (item, FALSE);
-gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-gtk_widget_show (item);
+applet_menu_item_add_device_item_helper (device, applet, menu, wimax_toggle, text);
 g_free (text);
 
 /* Add the active NSP if we're connected to something and the device is available */
diff --git a/src/applet-device-wired.c b/src/applet-device-wired.c
index ba381f5..db36a58 100644
--- a/src/applet-device-wired.c
+++ b/src/applet-device-wired.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -177,6 +177,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; add_default_connection_item (NMDevice *device,
 gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
 }
 
+static gboolean
+wired_toggle (GtkWidget *widget, gpointer user_data)
+{
+g_log (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, "UNIMPLEMENTED wired_toggle\n");
+}
+
 static void
 wired_add_menu_item (NMDevice *device,
                      guint32 n_devices,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -212,7 +218,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; wired_add_menu_item (NMDevice *device,
 text = g_strdup (_("Wired Network"));
 }
 
-item = applet_menu_item_create_device_item_helper (device, applet, text);
+applet_menu_item_add_device_item_helper (device, applet, menu, wired_toggle, text);
 g_free (text);
 
 /* Only dim the item if the device supports carrier detection AND
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -221,10 +227,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; wired_add_menu_item (NMDevice *device,
  if (nm_device_get_capabilities (device) &amp;amp; NM_DEVICE_CAP_CARRIER_DETECT)
 carrier = nm_device_ethernet_get_carrier (NM_DEVICE_ETHERNET (device));
 
-gtk_widget_set_sensitive (item, FALSE);
-gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-gtk_widget_show (item);
-
 if (g_slist_length (connections))
 add_connection_items (device, connections, carrier, active, ADD_ACTIVE, menu, applet);
 
diff --git a/src/applet.c b/src/applet.c
index 7b3a97b..347ed51 100644
--- a/src/applet.c
+++ b/src/applet.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -631,7 +631,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; applet_menu_create_switch_item_helper (NMApplet  *applet,
 
 g_object_set (G_OBJECT (menu_item),
               "child", box,
-              "sensitive", FALSE,
+              "sensitive", TRUE,
               NULL);
 
 return menu_item;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -822,14 +822,121 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; menu_title_item_dont_expose (GtkWidget *widget, GdkEventExpose *event, gpointer
 }
 #endif
 
-GtkWidget *
-applet_menu_item_create_device_item_helper (NMDevice *device,
+static inline gboolean
+applet_menu_item_toggle_switch (GtkWidget *widget, gpointer user_data)
+{
+GtkSwitch *sw = GTK_SWITCH(user_data);
+gtk_widget_activate(GTK_WIDGET(sw));
+}
+
+static inline gboolean
+applet_menu_item_draw_only_if_active_cb (GtkWidget *d, gpointer data)
+{
+gboolean active;
+g_object_get (G_OBJECT(d), "active", &amp;amp;active, NULL);
+if (active)
+return FALSE;
+return TRUE;
+}
+
+static inline gboolean
+applet_menu_item_sync_state (NMState state,
+ GtkWidget *spinner,
+ GtkWidget *sw)
+{
+gboolean spin = FALSE;
+gboolean sws;
+
+switch (state) {
+case NM_DEVICE_STATE_DEACTIVATING:
+spin = TRUE;
+case NM_DEVICE_STATE_UNKNOWN:
+case NM_DEVICE_STATE_UNMANAGED:
+case NM_DEVICE_STATE_UNAVAILABLE:
+sws = FALSE;
+break;
+case NM_DEVICE_STATE_PREPARE:
+case NM_DEVICE_STATE_CONFIG:
+case NM_DEVICE_STATE_NEED_AUTH:
+case NM_DEVICE_STATE_IP_CONFIG:
+case NM_DEVICE_STATE_IP_CHECK:
+case NM_DEVICE_STATE_SECONDARIES:
+spin = TRUE;
+case NM_DEVICE_STATE_ACTIVATED:
+case NM_DEVICE_STATE_DISCONNECTED:
+case NM_DEVICE_STATE_FAILED:
+sws = TRUE;
+break;
+default:
+g_log (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, "Got unmanaged state: %d", state);
+break;
+}
+
+gtk_switch_set_active(GTK_SWITCH(sw), sws);
+if (spin)
+gtk_spinner_start(GTK_SPINNER(spinner));
+else
+gtk_spinner_stop(GTK_SPINNER(spinner));
+
+return sws &amp;amp;&amp;amp; spin;
+}
+
+static gboolean
+applet_menu_item_handle_state_changed_cb (NMDevice *device,
+  NMDeviceState   state,
+  NMDeviceState   old_state,
+  NMDeviceStateReason   reason,
+  gpointer user_data)
+{
+GtkWidget *box  = GTK_WIDGET (user_data);
+GList     *list = gtk_container_get_children (GTK_CONTAINER(box));
+GtkWidget *sw      = list-&amp;gt;data;
+GtkWidget *spinner = g_list_next(list)-&amp;gt;data;
+
+applet_menu_item_sync_state (state, sw, spinner);
+return FALSE;
+}
+
+/* A little note: this is needed because the menu actually goes away when not shown,
+   hence, the box goes away too nasty things happen if we let the handler connected */
+static gboolean
+applet_menu_item_disconnect_signal (GtkWidget *box, gpointer user_data)
+{
+NMDevice *device = NM_DEVICE (user_data);
+g_object_disconnect (G_OBJECT (device), "any_signal", G_CALLBACK(applet_menu_item_handle_state_changed_cb), box, NULL);
+return FALSE;
+}
+
+void
+applet_menu_item_add_device_item_helper (NMDevice *device,
                                             NMApplet *applet,
+GtkWidget *menu,
+gboolean (*cb) (GtkWidget *, gpointer user_data),
                                             const gchar *text)
 {
 GtkWidget *item;
 GtkWidget *label    = gtk_label_new (NULL);
-item = applet_menu_create_switch_item_helper (applet, label, NULL);
+GtkWidget *sw       = gtk_switch_new ();
+GtkWidget *spinner  = gtk_spinner_new ();
+GtkWidget *box      = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+NMDeviceState state = nm_device_get_state(device);
+
+applet_menu_item_sync_state (state, spinner, sw);
+
+gtk_box_pack_start (GTK_BOX(box), spinner, FALSE, FALSE, 0);
+gtk_box_pack_start (GTK_BOX(box), sw, FALSE, FALSE, 0);
+
+g_signal_connect (spinner, "draw", G_CALLBACK (applet_menu_item_draw_only_if_active_cb), NULL);
+g_signal_connect (device, "state-changed", G_CALLBACK(applet_menu_item_handle_state_changed_cb), box);
+g_signal_connect (box, "destroy", G_CALLBACK (applet_menu_item_disconnect_signal), device);
+
+gtk_label_set_markup (GTK_LABEL (label), text);
+
+item = applet_menu_create_switch_item_helper (applet, label, box);
+if (cb) {
+g_signal_connect (item, "activate", G_CALLBACK(applet_menu_item_toggle_switch), sw);
+g_signal_connect (sw,   "activate", G_CALLBACK (cb), applet);
+}
 
 #if GTK_CHECK_VERSION(2,90,7)
 g_signal_connect (item,  "draw", G_CALLBACK (menu_title_item_draw), label);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -838,7 +945,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; applet_menu_item_create_device_item_helper (NMDevice *device,
 g_signal_connect (item,  "expose-event", G_CALLBACK (menu_title_item_expose), label);
 g_signal_connect (label, "expose-event", G_CALLBACK (menu_title_item_dont_expose), NULL);
 #endif
-return item;
+
+gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+gtk_widget_show (item);
 }
 
 static void
diff --git a/src/applet.h b/src/applet.h
index efc2eff..ad82107 100644
--- a/src/applet.h
+++ b/src/applet.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -276,10 +276,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void applet_menu_item_add_complex_separator_helper (GtkWidget *menu,
                                                     const gchar* label,
                                                     int pos);
 
-GtkWidget*
-applet_menu_item_create_device_item_helper (NMDevice *device,
-                                            NMApplet *applet,
-                                            const gchar *text);
+void
+applet_menu_item_add_device_item_helper (NMDevice *device,
+ NMApplet *applet,
+ GtkWidget *menu,
+ gboolean (*cb) (GtkWidget *, gpointer user_data),
+ const gchar *text);
 
 NMRemoteConnection *applet_get_exported_connection_for_device (NMDevice *device, NMApplet *applet);
 
&lt;/pre&gt;</description>
    <dc:creator>Niv Sardi</dc:creator>
    <dc:date>2012-05-21T23:03:48</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21199">
    <title>[PATCH 3/4] move creation ofapplet_menu_item_create_device_item_helper to it's own helper</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21199</link>
    <description>&lt;pre&gt;this is going to be used to be able to make a more complex widget there, you should have guessed by the name it's going to be a switch

Signed-off-by: Niv Sardi &amp;lt;xaiki&amp;lt; at &amp;gt;debian.org&amp;gt;
---
 src/applet.c |   28 ++++++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/src/applet.c b/src/applet.c
index 6081a71..7b3a97b 100644
--- a/src/applet.c
+++ b/src/applet.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -613,6 +613,30 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; applet_menu_item_activate_helper (NMDevice *device,
 }
 }
 
+GtkWidget *
+applet_menu_create_switch_item_helper (NMApplet  *applet,
+   GtkWidget *label,
+   GtkWidget *swbox)
+{
+GtkWidget *menu_item = gtk_image_menu_item_new ();
+#if GTK_CHECK_VERSION(3,1,6)
+GtkWidget *box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+#else
+GtkWidget *box = gtk_hbox_new (FALSE, 0);
+#endif
+
+gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
+if (swbox)
+gtk_box_pack_start (GTK_BOX (box), swbox, FALSE, FALSE, 0);
+
+g_object_set (G_OBJECT (menu_item),
+              "child", box,
+              "sensitive", FALSE,
+              NULL);
+
+return menu_item;
+}
+
 void
 applet_menu_item_add_complex_separator_helper (GtkWidget *menu,
                                                NMApplet *applet,
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -804,9 +828,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; applet_menu_item_create_device_item_helper (NMDevice *device,
                                             const gchar *text)
 {
 GtkWidget *item;
+GtkWidget *label    = gtk_label_new (NULL);
+item = applet_menu_create_switch_item_helper (applet, label, NULL);
 
-item = gtk_menu_item_new_with_mnemonic (text);
-gtk_widget_set_sensitive (item, FALSE);
 #if GTK_CHECK_VERSION(2,90,7)
 g_signal_connect (item,  "draw", G_CALLBACK (menu_title_item_draw), label);
 g_signal_connect (label, "draw", G_CALLBACK (menu_title_item_dont_draw), NULL);
&lt;/pre&gt;</description>
    <dc:creator>Niv Sardi</dc:creator>
    <dc:date>2012-05-21T23:03:47</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21198">
    <title>[PATCH 2/4] whitespace fixup</title>
    <link>http://permalink.gmane.org/gmane.linux.network.networkmanager.devel/21198</link>
    <description>&lt;pre&gt;Signed-off-by: Niv Sardi &amp;lt;xaiki&amp;lt; at &amp;gt;debian.org&amp;gt;
---
 src/applet.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/applet.c b/src/applet.c
index ccbbfbe..6081a71 100644
--- a/src/applet.c
+++ b/src/applet.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -621,7 +621,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; applet_menu_item_add_complex_separator_helper (GtkWidget *menu,
 {
 GtkWidget *menu_item = gtk_image_menu_item_new ();
 #if GTK_CHECK_VERSION(3,1,6)
-        GtkWidget *box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+GtkWidget *box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
 #else
 GtkWidget *box = gtk_hbox_new (FALSE, 0);
 #endif
&lt;/pre&gt;</description>
    <dc:creator>Niv Sardi</dc:creator>
    <dc:date>2012-05-21T23:03:46</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.linux.network.networkmanager.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.linux.network.networkmanager.devel</link>
  </textinput>
</rdf:RDF>

