#define   V3_CLOCK_SRC_INTERNAL                0x00
 #define   V3_CLOCK_SRC_WORD_ON_BNC     0x01
 #define   V3_CLOCK_SRC_SPH             0x02
+#define   V3_CLOCK_SRC_AESEBU_ON_XLR   0x08
 #define   V3_CLOCK_SRC_SPDIF_ON_COAX   0x10
 #define   V3_CLOCK_SRC_OPT_IFACE_A     0x18
 #define   V3_CLOCK_SRC_OPT_IFACE_B     0x19
        case V3_CLOCK_SRC_SPH:
                *src = SND_MOTU_CLOCK_SOURCE_SPH;
                break;
+       case V3_CLOCK_SRC_AESEBU_ON_XLR:
+               *src = SND_MOTU_CLOCK_SOURCE_AESEBU_ON_XLR;
+               break;
        case V3_CLOCK_SRC_SPDIF_ON_COAX:
                *src = SND_MOTU_CLOCK_SOURCE_SPDIF_ON_COAX;
                break;
                                          sizeof(reg));
 }
 
-static int detect_packet_formats_828mk3(struct snd_motu *motu, u32 data)
+static int detect_packet_formats_dual_opt_iface(struct snd_motu *motu, u32 data)
 {
        if (data & V3_ENABLE_OPT_IN_IFACE_A) {
                if (data & V3_NO_ADAT_OPT_IN_IFACE_A) {
               motu->spec->rx_fixed_pcm_chunks,
               sizeof(motu->rx_packet_formats.pcm_chunks));
 
-       if (motu->spec == &snd_motu_spec_828mk3_fw || motu->spec == &snd_motu_spec_828mk3_hybrid)
-               return detect_packet_formats_828mk3(motu, data);
+       if (motu->spec == &snd_motu_spec_828mk3_fw ||
+           motu->spec == &snd_motu_spec_828mk3_hybrid ||
+           motu->spec == &snd_motu_spec_traveler_mk3)
+               return detect_packet_formats_dual_opt_iface(motu, data);
        else
                return 0;
 }
        .rx_fixed_pcm_chunks = {14, 14, 14},    // Additional 4 dummy chunks at higher rate.
 };
 
+const struct snd_motu_spec snd_motu_spec_traveler_mk3 = {
+       .name = "TravelerMk3",
+       .protocol_version = SND_MOTU_PROTOCOL_V3,
+       .flags = SND_MOTU_SPEC_RX_MIDI_3RD_Q |
+                SND_MOTU_SPEC_TX_MIDI_3RD_Q |
+                SND_MOTU_SPEC_COMMAND_DSP,
+       .tx_fixed_pcm_chunks = {18, 14, 10},
+       .rx_fixed_pcm_chunks = {14, 14, 10},
+};
+
 const struct snd_motu_spec snd_motu_spec_ultralite_mk3 = {
        .name = "UltraLiteMk3",
        .protocol_version = SND_MOTU_PROTOCOL_V3,
 
        SND_MOTU_DEV_ENTRY(0x00000f, &snd_motu_spec_8pre),
        SND_MOTU_DEV_ENTRY(0x000015, &snd_motu_spec_828mk3_fw), // FireWire only.
        SND_MOTU_DEV_ENTRY(0x000019, &snd_motu_spec_ultralite_mk3), // FireWire only.
+       SND_MOTU_DEV_ENTRY(0x00001b, &snd_motu_spec_traveler_mk3),
        SND_MOTU_DEV_ENTRY(0x000030, &snd_motu_spec_ultralite_mk3), // Hybrid.
        SND_MOTU_DEV_ENTRY(0x000035, &snd_motu_spec_828mk3_hybrid), // Hybrid.
        SND_MOTU_DEV_ENTRY(0x000033, &snd_motu_spec_audio_express),