(export (version D)
  (design
    (source /home/mdh10/src/dualpmod/dualpmod.sch)
    (date "Thu 07 Mar 2019 18:20:39 GMT")
    (tool "Eeschema 5.0.2-bee76a0~70~ubuntu18.04.1")
    (sheet (number 1) (name /) (tstamps /)
      (title_block
        (title)
        (company)
        (rev)
        (date)
        (source dualpmod.sch)
        (comment (number 1) (value ""))
        (comment (number 2) (value ""))
        (comment (number 3) (value ""))
        (comment (number 4) (value "")))))
  (components
    (comp (ref J3)
      (value 68021-412HLF)
      (footprint digikey-footprints:PinHeader_6x2_P2.54mm_Horizontal)
      (datasheet https://cdn.amphenol-icc.com/media/wysiwyg/files/drawing/68020.pdf)
      (fields
        (field (name Category) "Connectors, Interconnects")
        (field (name DK_Datasheet_Link) https://cdn.amphenol-icc.com/media/wysiwyg/files/drawing/68020.pdf)
        (field (name DK_Detail_Page) /product-detail/en/amphenol-icc-fci/68021-412HLF/609-3355-ND/1878558)
        (field (name Description) "CONN HEADER R/A 12POS 2.54MM")
        (field (name Digi-Key_PN) 609-3355-ND)
        (field (name Family) "Rectangular Connectors - Headers, Male Pins")
        (field (name MPN) 68021-412HLF)
        (field (name Manufacturer) "Amphenol ICC (FCI)")
        (field (name Status) Active))
      (libsource (lib dk_Rectangular-Connectors-Headers-Male-Pins) (part 68021-412HLF) (description "CONN HEADER R/A 12POS 2.54MM"))
      (sheetpath (names /) (tstamps /))
      (tstamp 5C7E600E))
    (comp (ref R4)
      (value 22R)
      (footprint Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder)
      (datasheet ~)
      (libsource (lib Device) (part R_Small_US) (description "Resistor, small US symbol"))
      (sheetpath (names /) (tstamps /))
      (tstamp 5C7E65B5))
    (comp (ref R3)
      (value 22R)
      (footprint Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder)
      (datasheet ~)
      (libsource (lib Device) (part R_Small_US) (description "Resistor, small US symbol"))
      (sheetpath (names /) (tstamps /))
      (tstamp 5C7E6727))
    (comp (ref R9)
      (value 1k5)
      (footprint Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder)
      (datasheet ~)
      (libsource (lib Device) (part R_Small_US) (description "Resistor, small US symbol"))
      (sheetpath (names /) (tstamps /))
      (tstamp 5C7E74B9))
    (comp (ref R5)
      (value 22R)
      (footprint Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder)
      (datasheet ~)
      (libsource (lib Device) (part R_Small_US) (description "Resistor, small US symbol"))
      (sheetpath (names /) (tstamps /))
      (tstamp 5C7E7B21))
    (comp (ref R6)
      (value 22R)
      (footprint Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder)
      (datasheet ~)
      (libsource (lib Device) (part R_Small_US) (description "Resistor, small US symbol"))
      (sheetpath (names /) (tstamps /))
      (tstamp 5C7E7B28))
    (comp (ref R10)
      (value 1k5)
      (footprint Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder)
      (datasheet ~)
      (libsource (lib Device) (part R_Small_US) (description "Resistor, small US symbol"))
      (sheetpath (names /) (tstamps /))
      (tstamp 5C7E88E5))
    (comp (ref R7)
      (value 5k1)
      (footprint Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder)
      (datasheet ~)
      (libsource (lib Device) (part R_Small_US) (description "Resistor, small US symbol"))
      (sheetpath (names /) (tstamps /))
      (tstamp 5C7F09F9))
    (comp (ref R8)
      (value 5k1)
      (footprint Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder)
      (datasheet ~)
      (libsource (lib Device) (part R_Small_US) (description "Resistor, small US symbol"))
      (sheetpath (names /) (tstamps /))
      (tstamp 5C7F0A6A))
    (comp (ref R1)
      (value 5k1)
      (footprint Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder)
      (datasheet ~)
      (libsource (lib Device) (part R_Small_US) (description "Resistor, small US symbol"))
      (sheetpath (names /) (tstamps /))
      (tstamp 5C84B0B0))
    (comp (ref R2)
      (value 5k1)
      (footprint Resistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolder)
      (datasheet ~)
      (libsource (lib Device) (part R_Small_US) (description "Resistor, small US symbol"))
      (sheetpath (names /) (tstamps /))
      (tstamp 5C84B0B7))
    (comp (ref J2)
      (value 10118193-0001LF)
      (footprint digikey-footprints:USB_Micro_B_Female_10118193-0001LF)
      (datasheet http://www.amphenol-icc.com/media/wysiwyg/files/drawing/10118193.pdf)
      (fields
        (field (name Category) "Connectors, Interconnects")
        (field (name DK_Datasheet_Link) http://www.amphenol-icc.com/media/wysiwyg/files/drawing/10118193.pdf)
        (field (name DK_Detail_Page) /product-detail/en/amphenol-icc-fci/10118193-0001LF/609-4616-1-ND/2785380)
        (field (name Description) "CONN RCPT USB2.0 MICRO B SMD R/A")
        (field (name Digi-Key_PN) 609-4616-1-ND)
        (field (name Family) "USB, DVI, HDMI Connectors")
        (field (name MPN) 10118193-0001LF)
        (field (name Manufacturer) "Amphenol ICC (FCI)")
        (field (name Status) Active))
      (libsource (lib dk_USB-DVI-HDMI-Connectors) (part 10118193-0001LF) (description "CONN RCPT USB2.0 MICRO B SMD R/A"))
      (sheetpath (names /) (tstamps /))
      (tstamp 5C8252B6))
    (comp (ref J1)
      (value 10118193-0001LF)
      (footprint digikey-footprints:USB_Micro_B_Female_10118193-0001LF)
      (datasheet http://www.amphenol-icc.com/media/wysiwyg/files/drawing/10118193.pdf)
      (fields
        (field (name Category) "Connectors, Interconnects")
        (field (name DK_Datasheet_Link) http://www.amphenol-icc.com/media/wysiwyg/files/drawing/10118193.pdf)
        (field (name DK_Detail_Page) /product-detail/en/amphenol-icc-fci/10118193-0001LF/609-4616-1-ND/2785380)
        (field (name Description) "CONN RCPT USB2.0 MICRO B SMD R/A")
        (field (name Digi-Key_PN) 609-4616-1-ND)
        (field (name Family) "USB, DVI, HDMI Connectors")
        (field (name MPN) 10118193-0001LF)
        (field (name Manufacturer) "Amphenol ICC (FCI)")
        (field (name Status) Active))
      (libsource (lib dk_USB-DVI-HDMI-Connectors) (part 10118193-0001LF) (description "CONN RCPT USB2.0 MICRO B SMD R/A"))
      (sheetpath (names /) (tstamps /))
      (tstamp 5C830207)))
  (libparts
    (libpart (lib Device) (part R_Small_US)
      (description "Resistor, small US symbol")
      (docs ~)
      (footprints
        (fp R_*))
      (fields
        (field (name Reference) R)
        (field (name Value) R_Small_US))
      (pins
        (pin (num 1) (name ~) (type passive))
        (pin (num 2) (name ~) (type passive))))
    (libpart (lib dk_Rectangular-Connectors-Headers-Male-Pins) (part 68021-412HLF)
      (description "CONN HEADER R/A 12POS 2.54MM")
      (docs https://cdn.amphenol-icc.com/media/wysiwyg/files/drawing/68020.pdf)
      (fields
        (field (name Reference) J)
        (field (name Value) 68021-412HLF)
        (field (name Footprint) digikey-footprints:PinHeader_6x2_P2.54mm_Horizontal)
        (field (name Datasheet) https://cdn.amphenol-icc.com/media/wysiwyg/files/drawing/68020.pdf)
        (field (name Digi-Key_PN) 609-3355-ND)
        (field (name MPN) 68021-412HLF)
        (field (name Category) "Connectors, Interconnects")
        (field (name Family) "Rectangular Connectors - Headers, Male Pins")
        (field (name DK_Datasheet_Link) https://cdn.amphenol-icc.com/media/wysiwyg/files/drawing/68020.pdf)
        (field (name DK_Detail_Page) /product-detail/en/amphenol-icc-fci/68021-412HLF/609-3355-ND/1878558)
        (field (name Description) "CONN HEADER R/A 12POS 2.54MM")
        (field (name Manufacturer) "Amphenol ICC (FCI)")
        (field (name Status) Active))
      (pins
        (pin (num 1) (name ~) (type passive))
        (pin (num 2) (name ~) (type passive))
        (pin (num 3) (name ~) (type passive))
        (pin (num 4) (name ~) (type passive))
        (pin (num 5) (name ~) (type passive))
        (pin (num 6) (name ~) (type passive))
        (pin (num 7) (name ~) (type passive))
        (pin (num 8) (name ~) (type passive))
        (pin (num 9) (name ~) (type passive))
        (pin (num 10) (name ~) (type passive))
        (pin (num 11) (name ~) (type passive))
        (pin (num 12) (name ~) (type passive))))
    (libpart (lib dk_USB-DVI-HDMI-Connectors) (part 10118193-0001LF)
      (description "CONN RCPT USB2.0 MICRO B SMD R/A")
      (docs http://www.amphenol-icc.com/media/wysiwyg/files/drawing/10118193.pdf)
      (fields
        (field (name Reference) J)
        (field (name Value) 10118193-0001LF)
        (field (name Footprint) digikey-footprints:USB_Micro_B_Female_10118193-0001LF)
        (field (name Datasheet) http://www.amphenol-icc.com/media/wysiwyg/files/drawing/10118193.pdf)
        (field (name Digi-Key_PN) 609-4616-1-ND)
        (field (name MPN) 10118193-0001LF)
        (field (name Category) "Connectors, Interconnects")
        (field (name Family) "USB, DVI, HDMI Connectors")
        (field (name DK_Datasheet_Link) http://www.amphenol-icc.com/media/wysiwyg/files/drawing/10118193.pdf)
        (field (name DK_Detail_Page) /product-detail/en/amphenol-icc-fci/10118193-0001LF/609-4616-1-ND/2785380)
        (field (name Description) "CONN RCPT USB2.0 MICRO B SMD R/A")
        (field (name Manufacturer) "Amphenol ICC (FCI)")
        (field (name Status) Active))
      (pins
        (pin (num 1) (name ~) (type passive))
        (pin (num 2) (name ~) (type passive))
        (pin (num 3) (name ~) (type passive))
        (pin (num 4) (name ~) (type passive))
        (pin (num 5) (name ~) (type passive))
        (pin (num SH) (name ~) (type passive)))))
  (libraries
    (library (logical Device)
      (uri /usr/share/kicad/library/Device.lib))
    (library (logical dk_Rectangular-Connectors-Headers-Male-Pins)
      (uri /local/scratch/mdh10/src/digikey-kicad-library/digikey-symbols/dk_Rectangular-Connectors-Headers-Male-Pins.lib))
    (library (logical dk_USB-DVI-HDMI-Connectors)
      (uri /local/scratch/mdh10/src/digikey-kicad-library/digikey-symbols/dk_USB-DVI-HDMI-Connectors.lib)))
  (nets
    (net (code 1) (name "Net-(J1-Pad4)")
      (node (ref J1) (pin 4)))
    (net (code 2) (name "Net-(J2-Pad4)")
      (node (ref J2) (pin 4)))
    (net (code 3) (name /VBUS)
      (node (ref J2) (pin 1))
      (node (ref R7) (pin 1)))
    (net (code 4) (name /DP2_R)
      (node (ref J3) (pin 12))
      (node (ref R5) (pin 1)))
    (net (code 5) (name /DP1_R)
      (node (ref J3) (pin 11))
      (node (ref R4) (pin 1)))
    (net (code 6) (name /DN1_R)
      (node (ref J3) (pin 9))
      (node (ref R3) (pin 1)))
    (net (code 7) (name /PULLUP1)
      (node (ref J3) (pin 7))
      (node (ref R9) (pin 1)))
    (net (code 8) (name /DP1)
      (node (ref R9) (pin 2))
      (node (ref R4) (pin 2))
      (node (ref J2) (pin 3)))
    (net (code 9) (name /VBUS2)
      (node (ref J1) (pin 1))
      (node (ref R1) (pin 1)))
    (net (code 10) (name GND)
      (node (ref R8) (pin 2))
      (node (ref J3) (pin 3))
      (node (ref J3) (pin 4))
      (node (ref R2) (pin 2))
      (node (ref J1) (pin 5))
      (node (ref J2) (pin SH))
      (node (ref J2) (pin 5))
      (node (ref J1) (pin SH)))
    (net (code 11) (name /DN2)
      (node (ref R6) (pin 2))
      (node (ref J1) (pin 2)))
    (net (code 12) (name /PULLUP2)
      (node (ref R10) (pin 1))
      (node (ref J3) (pin 8)))
    (net (code 13) (name /DP2)
      (node (ref J1) (pin 3))
      (node (ref R5) (pin 2))
      (node (ref R10) (pin 2)))
    (net (code 14) (name /DN2_R)
      (node (ref R6) (pin 1))
      (node (ref J3) (pin 10)))
    (net (code 15) (name /SENSE1)
      (node (ref R7) (pin 2))
      (node (ref R8) (pin 1))
      (node (ref J3) (pin 5)))
    (net (code 16) (name /SENSE2)
      (node (ref R1) (pin 2))
      (node (ref R2) (pin 1))
      (node (ref J3) (pin 6)))
    (net (code 17) (name /DN1)
      (node (ref J2) (pin 2))
      (node (ref R3) (pin 2)))
    (net (code 18) (name +3V3)
      (node (ref J3) (pin 1))
      (node (ref J3) (pin 2)))))