<Vendor Name="FPP">
    <Controller Name="FPP">
        <!-- FPP's various serial outputs configured on the "Other" output tab -->
        <Variant Name="">
            <MaxPixelPort>0</MaxPixelPort>
            <MaxSerialPort>1</MaxSerialPort>
            <MaxSerialPortChannels>4096</MaxSerialPortChannels>
            <MaxPixelPortChannels>0</MaxPixelPortChannels>
            <OpenSourceFirmware/>
            <SupportsAutoLayout/>
            <SupportsUpload/>
            <SupportsAutoUpload/>
            <PixelProtocols>
            </PixelProtocols>
            <SerialProtocols>
                <Protocol>DMX</Protocol>
                <Protocol>OpenDMX</Protocol>
                <Protocol>GenericSerial</Protocol>
                <Protocol>LOR</Protocol>
                <Protocol>Pixelnet</Protocol>
                <Protocol>Pixelnet-Open</Protocol>
                <Protocol>Renard</Protocol>
            </SerialProtocols>
            <InputProtocols>
                <Protocol>ddp-input</Protocol>
            </InputProtocols>
            <ConfigDriver>FPP</ConfigDriver>
        </Variant>
    </Controller>
    <AbstractVariant Name="BaseFPPSettings">
        <OpenSourceFirmware/>
        <SupportsPixelPortCommonSettings/>
        <SupportsPixelZigZag/>
        <MaxZigZag>600</MaxZigZag>
        <SupportsUpload/>
        <SupportsInputOnlyUpload/>
        <MaxInputUniverses>1000</MaxInputUniverses>
        <InputProtocols>
            <Protocol>e131</Protocol>
            <Protocol>artnet</Protocol>
            <Protocol>ddp</Protocol>
        </InputProtocols>
        <SupportsMultipleSimultaneousInputProtocols/>
        <SupportsAutoUpload/>
        <SupportsFullxLightsControl/>
        <SupportsDefaultBrightness/>
        <SupportsDefaultGamma/>
        <PreferredInputProtocol>DDP</PreferredInputProtocol>
		<PreferredState>xLights Only</PreferredState>
        <ConfigDriver>FPP</ConfigDriver>
		<FPS40Pixels>800</FPS40Pixels>
		<FPS40Pixels_SR>720</FPS40Pixels_SR>
    </AbstractVariant>
    <AbstractVariant Name="FPPStringCape" Base="FPP:BaseFPPSettings">
        <MaxSerialPortChannels>512</MaxSerialPortChannels>
        <MaxPixelPortChannels>4800</MaxPixelPortChannels>
        <SupportsVirtualStrings/>
        <SupportsAutoLayout/>
        <SupportsRemotes/>
        <SupportsSmartRemotes>6</SupportsSmartRemotes>
        <AllSmartRemoteTypesPerPortMustBeSame/>
        <SupportsPixelPortEndNullPixels/>
        <PixelProtocols>
            <Protocol>ws2811</Protocol>
        </PixelProtocols>
        <SerialProtocols>
            <Protocol>dmx</Protocol>
            <Protocol>pixelnet</Protocol>
        </SerialProtocols>
        <SmartRemoteTypes>
            <Type>falcon_v1</Type>
            <Type>fpp_v2</Type>
        </SmartRemoteTypes>
        <fppStringFileName>co-bbbStrings</fppStringFileName>
    </AbstractVariant>
    <AbstractVariant Name="FPPStringCapeTTYs" Base="FPP:BaseFPPSettings">
        <MaxSerialPortChannels>512</MaxSerialPortChannels>
        <MaxPixelPortChannels>4800</MaxPixelPortChannels>
        <SupportsVirtualStrings/>
        <SupportsAutoLayout/>
        <SupportsRemotes/>
        <SupportsSmartRemotes>6</SupportsSmartRemotes>
        <AllSmartRemoteTypesPerPortMustBeSame/>
        <SupportsPixelPortEndNullPixels/>
        <PixelProtocols>
            <Protocol>ws2811</Protocol>
        </PixelProtocols>
        <SerialProtocols>
            <Protocol>DMX-Open</Protocol>
            <Protocol>DMX-Pro</Protocol>
            <Protocol>GenericSerial</Protocol>
            <Protocol>LOR</Protocol>
            <Protocol>Pixelnet-Lynx</Protocol>
            <Protocol>Pixelnet-Open</Protocol>
            <Protocol>Renard</Protocol>
        </SerialProtocols>
        <SmartRemoteTypes>
            <Type>falcon_v1</Type>
            <Type>fpp_v2</Type>
        </SmartRemoteTypes>
        <fppStringFileName>co-bbbStrings</fppStringFileName>
    </AbstractVariant>
    <AbstractVariant Name="FPPShiftStringCape" Base="FPP:FPPStringCapeTTYs">
        <SmartRemoteTypes>
            <Type>falcon_v1</Type>
            <Type>fpp_v2</Type>
            <Type>falcon_v5</Type>
        </SmartRemoteTypes>
    </AbstractVariant>
    <AbstractVariant Name="FPPStringRPIWS281XPiHat" Base="FPP:BaseFPPSettings">
        <MaxSerialPortChannels>512</MaxSerialPortChannels>
        <MaxPixelPortChannels>4200</MaxPixelPortChannels>
        <SupportsVirtualStrings/>
        <SupportsAutoLayout/>
        <SupportsPixelPortEndNullPixels/>
        <PixelProtocols>
            <Protocol>ws2811</Protocol>
        </PixelProtocols>
        <SerialProtocols>
            <Protocol>DMX-Open</Protocol>
            <Protocol>DMX-Pro</Protocol>
            <Protocol>GenericSerial</Protocol>
            <Protocol>LOR</Protocol>
            <Protocol>Pixelnet-Lynx</Protocol>
            <Protocol>Pixelnet-Open</Protocol>
            <Protocol>Renard</Protocol>
        </SerialProtocols>
        <fppStringFileName>co-pixelStrings</fppStringFileName>
        <fppStringDriverType>RPIWS281X</fppStringDriverType>
    </AbstractVariant>
    <AbstractVariant Name="FPPStringDPIPiHat" Base="FPP:BaseFPPSettings">
        <MaxSerialPortChannels>512</MaxSerialPortChannels>
        <MaxPixelPortChannels>4200</MaxPixelPortChannels>
        <SupportsVirtualStrings/>
        <SupportsAutoLayout/>
        <SupportsRemotes/>
        <SupportsSmartRemotes>6</SupportsSmartRemotes>
        <AllSmartRemoteTypesPerPortMustBeSame/>
        <SupportsPixelPortEndNullPixels/>
        <PixelProtocols>
            <Protocol>ws2811</Protocol>
        </PixelProtocols>
        <SerialProtocols>
            <Protocol>DMX-Open</Protocol>
            <Protocol>DMX-Pro</Protocol>
            <Protocol>GenericSerial</Protocol>
            <Protocol>LOR</Protocol>
            <Protocol>Pixelnet-Lynx</Protocol>
            <Protocol>Pixelnet-Open</Protocol>
            <Protocol>Renard</Protocol>
        </SerialProtocols>
        <SmartRemoteTypes>
            <Type>falcon_v1</Type>
            <Type>fpp_v2</Type>
        </SmartRemoteTypes>
        <fppStringFileName>co-pixelStrings</fppStringFileName>
        <fppStringDriverType>DPIPixels</fppStringDriverType>
    </AbstractVariant>
    <Controller Name="LED Panels">
        <Variant Name="" ID="LED Panels" Base="FPP:BaseFPPSettings">
            <MaxPixelPort>0</MaxPixelPort>
            <MaxSerialPort>1</MaxSerialPort>
            <MaxSerialPortChannels>512</MaxSerialPortChannels>
            <MaxPixelPortChannels>0</MaxPixelPortChannels>
            <SupportsLEDPanelMatrix/>
            <SupportsAutoLayout/>
            <PixelProtocols>
            </PixelProtocols>
            <SerialProtocols>
                <Protocol>DMX-Open</Protocol>
                <Protocol>DMX-Pro</Protocol>
                <Protocol>GenericSerial</Protocol>
                <Protocol>LOR</Protocol>
                <Protocol>Pixelnet-Lynx</Protocol>
                <Protocol>Pixelnet-Open</Protocol>
                <Protocol>Renard</Protocol>
            </SerialProtocols>
        </Variant>
    </Controller>
    <Controller Name="Virtual Matrix">
        <Variant Name="" ID="Virtual Matrix" Base="FPP:BaseFPPSettings">
            <MaxPixelPort>0</MaxPixelPort>
            <MaxSerialPort>1</MaxSerialPort>
            <MaxSerialPortChannels>512</MaxSerialPortChannels>
            <MaxPixelPortChannels>0</MaxPixelPortChannels>
            <SupportsVirtualMatrix/>
            <SupportsLEDPanelMatrix/>
            <SupportsAutoLayout/>
            <PixelProtocols>
            </PixelProtocols>
            <SerialProtocols>
                <Protocol>DMX-Open</Protocol>
                <Protocol>DMX-Pro</Protocol>
                <Protocol>GenericSerial</Protocol>
                <Protocol>LOR</Protocol>
                <Protocol>Pixelnet-Lynx</Protocol>
                <Protocol>Pixelnet-Open</Protocol>
                <Protocol>Renard</Protocol>
            </SerialProtocols>
        </Variant>
    </Controller>
    <Controller Name="Pi4/Pi5 Virtual Matrix">
        <Variant Name="" ID="Pi4 Virtual Matrix" Base="FPP:BaseFPPSettings">
            <MaxPixelPort>0</MaxPixelPort>
            <MaxSerialPort>1</MaxSerialPort>
            <MaxSerialPortChannels>512</MaxSerialPortChannels>
            <MaxPixelPortChannels>0</MaxPixelPortChannels>
            <SupportsVirtualMatrix/>
            <MaxVirtualMatrixPorts>2</MaxVirtualMatrixPorts>
            <SupportsLEDPanelMatrix/>
            <SupportsAutoLayout/>
            <PixelProtocols>
            </PixelProtocols>
            <SerialProtocols>
                <Protocol>DMX-Open</Protocol>
                <Protocol>DMX-Pro</Protocol>
                <Protocol>GenericSerial</Protocol>
                <Protocol>LOR</Protocol>
                <Protocol>Pixelnet-Lynx</Protocol>
                <Protocol>Pixelnet-Open</Protocol>
                <Protocol>Renard</Protocol>
            </SerialProtocols>
            <AltNames>
                <AltName>Pi4 Virtual Matrix</AltName>
            </AltNames>
        </Variant>
    </Controller>
    <Controller Name="Pi Hat">
        <Variant Name="2 Output RPIWS281X" ID="PiHat" Base="FPP:FPPStringRPIWS281XPiHat">
            <MaxPixelPort>2</MaxPixelPort>
            <MaxSerialPort>1</MaxSerialPort>
            <SupportsVirtualMatrix/>
            <SupportsLEDPanelMatrix/>
            <fppSerialPort1>ttyAMA0</fppSerialPort1>
        </Variant>
        <Variant Name="2 Output DPI" ID="PiHat-DPIPixels" Base="FPP:FPPStringDPIPiHat">
            <MaxPixelPort>2</MaxPixelPort>
            <MaxSerialPort>1</MaxSerialPort>
            <SupportsLEDPanelMatrix/>
            <fppSerialPort1>ttyAMA0</fppSerialPort1>
        </Variant>
        <Variant Name="24 Output DPI" ID="DPIPixels-24" Base="FPP:FPPStringDPIPiHat">
            <MaxPixelPort>24</MaxPixelPort>
            <MaxSerialPort>1</MaxSerialPort>
            <SupportsVirtualMatrix/>
            <SupportsLEDPanelMatrix/>
            <fppSerialPort1>ttyAMA0</fppSerialPort1>
        </Variant>
    </Controller>
    <Controller Name="Octoscroller">
        <Variant Name="" ID="Octoscroller" Base="FPP:BaseFPPSettings">
            <MaxPixelPort>0</MaxPixelPort>
            <MaxSerialPort>0</MaxSerialPort>
            <MaxSerialPortChannels>0</MaxSerialPortChannels>
            <MaxPixelPortChannels>0</MaxPixelPortChannels>
            <SupportsLEDPanelMatrix/>
            <SupportsAutoLayout/>
            <PixelProtocols>
            </PixelProtocols>
            <SerialProtocols>
            </SerialProtocols>
        </Variant>
    </Controller>
    <Controller Name="RGBCape24">
        <Variant Name="" ID="RGBCape24" Base="FPP:FPPStringCape">
            <MaxPixelPort>24</MaxPixelPort>
            <MaxSerialPort>0</MaxSerialPort>
            <MaxSerialPortChannels>0</MaxSerialPortChannels>
            <fpp>3</fpp>
            <fpp1>1,8</fpp1>
            <fpp2>9,8</fpp2>
            <fpp3>17,8</fpp3>
        </Variant>
    </Controller>
    <Controller Name="RGBCape48">
        <Variant Name="Revision C" ID="RGBCape48C" Base="FPP:FPPStringCape">
            <MaxPixelPort>48</MaxPixelPort>
            <MaxSerialPort>0</MaxSerialPort>
            <MaxSerialPortChannels>0</MaxSerialPortChannels>
            <fpp>6</fpp>
            <fpp1>1,8</fpp1>
            <fpp2>9,8</fpp2>
            <fpp3>17,8</fpp3>
            <fpp4>25,8</fpp4>
            <fpp5>33,8</fpp5>
            <fpp6>41,8</fpp6>
        </Variant>
        <Variant Name="Revision F" ID="RGBCape48F" Base="FPP:FPPStringCape">
            <MaxPixelPort>48</MaxPixelPort>
            <MaxSerialPort>0</MaxSerialPort>
            <MaxSerialPortChannels>0</MaxSerialPortChannels>
            <fpp>6</fpp>
            <fpp1>1,8</fpp1>
            <fpp2>9,8</fpp2>
            <fpp3>17,8</fpp3>
            <fpp4>25,8</fpp4>
            <fpp5>33,8</fpp5>
            <fpp6>41,8</fpp6>
        </Variant>
    </Controller>
    <Controller Name="F4-B">
        <Variant Name="" ID="F4-B" Base="FPP:FPPStringCape">
            <MaxPixelPort>4</MaxPixelPort>
            <MaxSerialPort>1</MaxSerialPort>
        </Variant>
    </Controller>
    <Controller Name="F16-B">
        <Variant Name="No Expansion (8 Serial)" ID="F16-B" Base="FPP:FPPStringCape">
            <MaxPixelPort>16</MaxPixelPort>
            <MaxSerialPort>8</MaxSerialPort>
        </Variant>
        <Variant Name="32 Outputs (8 Serial)" ID="F16-B-32" Base="FPP:FPPStringCape">
            <MaxPixelPort>32</MaxPixelPort>
            <MaxSerialPort>8</MaxSerialPort>
            <fpp>1</fpp>
            <fpp1>17,16</fpp1>
        </Variant>
        <Variant Name="48 outputs (No Serial)" ID="F16-B-48" Base="FPP:FPPStringCape">
            <MaxPixelPort>48</MaxPixelPort>
            <MaxSerialPort>0</MaxSerialPort>
            <MaxSerialPortChannels>0</MaxSerialPortChannels>
            <fpp>2</fpp>
            <fpp1>17,16</fpp1>
            <fpp2>33,16</fpp2>
        </Variant>
    </Controller>
    <Controller Name="Mirage">
        <Variant Name="No Receivers" ID="Mirage" Base="FPP:FPPStringCapeTTYs">
            <MaxPixelPort>24</MaxPixelPort>
            <MaxSerialPort>2</MaxSerialPort>
            <fpp>3</fpp>
            <fpp1>1,8</fpp1>
            <fpp2>9,8</fpp2>
            <fpp3>17,8</fpp3>
            <fppSerialPort1>ttyS1</fppSerialPort1>
            <fppSerialPort2>ttyS2</fppSerialPort2>
        </Variant>
        <Variant Name="One Receiver" ID="Mirage1Diff" Base="FPP:FPPStringCapeTTYs">
            <MaxPixelPort>28</MaxPixelPort>
            <MaxSerialPort>2</MaxSerialPort>
            <fpp>4</fpp>
            <fpp1>1,8</fpp1>
            <fpp2>9,8</fpp2>
            <fpp3>17,8</fpp3>
            <fpp4>25,4</fpp4>
            <fppSerialPort1>ttyS1</fppSerialPort1>
            <fppSerialPort2>ttyS2</fppSerialPort2>
        </Variant>
        <Variant Name="Two Receivers" ID="Mirage2Diff" Base="FPP:FPPStringCapeTTYs">
            <MaxPixelPort>32</MaxPixelPort>
            <MaxSerialPort>2</MaxSerialPort>
            <fpp>5</fpp>
            <fpp1>1,8</fpp1>
            <fpp2>9,8</fpp2>
            <fpp3>17,8</fpp3>
            <fpp4>25,4</fpp4>
            <fpp5>29,4</fpp5>
            <fppSerialPort1>ttyS1</fppSerialPort1>
            <fppSerialPort2>ttyS2</fppSerialPort2>
        </Variant>
        <Variant Name="Three Receivers" ID="Mirage3Diff" Base="FPP:FPPStringCapeTTYs">
            <MaxPixelPort>36</MaxPixelPort>
            <MaxSerialPort>2</MaxSerialPort>
            <fpp>6</fpp>
            <fpp1>1,8</fpp1>
            <fpp2>9,8</fpp2>
            <fpp3>17,8</fpp3>
            <fpp4>25,4</fpp4>
            <fpp5>29,4</fpp5>
            <fpp6>33,4</fpp6>
            <fppSerialPort1>ttyS1</fppSerialPort1>
            <fppSerialPort2>ttyS2</fppSerialPort2>
        </Variant>
        <Variant Name="Four Receivers" ID="Mirage4Diff" Base="FPP:FPPStringCapeTTYs">
            <MaxPixelPort>40</MaxPixelPort>
            <MaxSerialPort>2</MaxSerialPort>
            <fpp>7</fpp>
            <fpp1>1,8</fpp1>
            <fpp2>9,8</fpp2>
            <fpp3>17,8</fpp3>
            <fpp4>25,4</fpp4>
            <fpp5>29,4</fpp5>
            <fpp6>33,4</fpp6>
            <fpp7>37,4</fpp7>
            <fppSerialPort1>ttyS1</fppSerialPort1>
            <fppSerialPort2>ttyS2</fppSerialPort2>
        </Variant>
        <Variant Name="Five Receivers" ID="Mirage5Diff" Base="FPP:FPPStringCapeTTYs">
            <MaxPixelPort>44</MaxPixelPort>
            <MaxSerialPort>2</MaxSerialPort>
            <fpp>8</fpp>
            <fpp1>1,8</fpp1>
            <fpp2>9,8</fpp2>
            <fpp3>17,8</fpp3>
            <fpp4>25,4</fpp4>
            <fpp5>29,4</fpp5>
            <fpp6>33,4</fpp6>
            <fpp7>37,4</fpp7>
            <fpp8>40,4</fpp8>
            <fppSerialPort1>ttyS1</fppSerialPort1>
            <fppSerialPort2>ttyS2</fppSerialPort2>
        </Variant>
    </Controller>
    <Controller Name="FPP Player Only">
        <Variant Name="" ID="SP">
            <MaxPixelPort>0</MaxPixelPort>
            <MaxSerialPort>0</MaxSerialPort>
            <MaxSerialPortChannels>0</MaxSerialPortChannels>
            <MaxPixelPortChannels>0</MaxPixelPortChannels>
            <PixelProtocols>
            </PixelProtocols>
            <SerialProtocols>
            </SerialProtocols>
            <InputProtocols>
                <Protocol>player only</Protocol>
            </InputProtocols>
            <PlayerOnly/>
            <PreferredInputProtocol>Player Only</PreferredInputProtocol>
            <ConfigDriver>FPP</ConfigDriver>
        </Variant>
    </Controller>
    <Controller Name="FPP Video Playing Remote Only">
        <Variant Name="" ID="MP">
            <MaxPixelPort>0</MaxPixelPort>
            <MaxSerialPort>0</MaxSerialPort>
            <MaxSerialPortChannels>0</MaxSerialPortChannels>
            <MaxPixelPortChannels>0</MaxPixelPortChannels>
            <PixelProtocols>
            </PixelProtocols>
            <SerialProtocols>
            </SerialProtocols>
            <InputProtocols>
                <Protocol>player only</Protocol>
            </InputProtocols>
            <PlayerOnly/>
            <PreferredInputProtocol>Player Only</PreferredInputProtocol>
            <ConfigDriver>FPP</ConfigDriver>
        </Variant>
    </Controller>
</Vendor>
