A mobile computing device comprising: a housing; a communication interface disposed at least partially within the housing, and configured to exchange commands and data with an accessory device, the communication interface having at least one port; an application that uses an application communication protocol and control logic disposed within the housing and communicatively coupled with the communication interface, the control logic being configured to: in response to establishing a connection with the accessory device and receiving information via a first port of the communication interface specifying at least one application communication protocol that is to be used by the accessory through the communication interface using an accessory communication protocol, use a protocol manager to associate the application communication protocol that is to be used by the accessory, with the first port, in a port map, allow the application to access the port map to see if the application protocol used by the application is present, matching the application to the first port when the application protocol used by the application is present and associated with first port in the port map; and routing messages between the application and the accessory device through the communication interface via the first port, which messages are structured in accordance with the application communication protocol used by the application, and wherein the routing comprises using tunnelling commands of the accessory communication protocol to send the messages via the first port using the accessory communication protocol. a housing; a communication interface disposed at least partially within the housing, and configured to exchange commands and data with an accessory device, the communication interface having at least one port; an application that uses an application communication protocol and control logic disposed within the housing and communicatively coupled with the communication interface, the control logic being configured to: in response to establishing a connection with the accessory device and receiving information via a first port of the communication interface specifying at least one application communication protocol that is to be used by the accessory through the communication interface using an accessory communication protocol, use a protocol manager to associate the application communication protocol that is to be used by the accessory, with the first port, in a port map, allow the application to access the port map to see if the application protocol used by the application is present, matching the application to the first port when the application protocol used by the application is present and associated with first port in the port map; and routing messages between the application and the accessory device through the communication interface via the first port, which messages are structured in accordance with the application communication protocol used by the application, and wherein the routing comprises using tunnelling commands of the accessory communication protocol to send the messages via the first port using the accessory communication protocol. in response to establishing a connection with the accessory device and receiving information via a first port of the communication interface specifying at least one application communication protocol that is to be used by the accessory through the communication interface using an accessory communication protocol, use a protocol manager to associate the application communication protocol that is to be used by the accessory, with the first port, in a port map, allow the application to access the port map to see if the application protocol used by the application is present, matching the application to the first port when the application protocol used by the application is present and associated with first port in the port map; and routing messages between the application and the accessory device through the communication interface via the first port, which messages are structured in accordance with the application communication protocol used by the application, and wherein the routing comprises using tunnelling commands of the accessory communication protocol to send the messages via the first port using the accessory communication protocol.