diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e43b0f9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.DS_Store
diff --git a/README.md b/README.md
index 1fcc063..a5af749 100644
--- a/README.md
+++ b/README.md
@@ -4,6 +4,25 @@ can hat design for raspberry pis
The canonical repo for this is hosted on tangled over at [`dunkirk.sh/can-hat`](https://tangled.org/dunkirk.sh/can-hat)
+## BOM
+
+| Component | LCSC # | Qty | Placement |
+|---|---|---|---|
+| MCP2518FDT-H/SL | C626759 | 3 | Hand solder |
+| MCP2562FDT-E/SN | C511335 | 3 | Hand solder |
+| OVETGLJANF-40MHZ | C295515 | 3 | Hand solder |
+| AT24C32D-SSHM-T | search LCSC | 1 | Hand solder |
+| 100nF 0603 X7R | basic | ~10 | PCBA |
+| 10µF 0805 | basic | 2 | PCBA |
+| 120Ω 0603 | basic | 3 | PCBA |
+| 10kΩ 0603 | basic | 6 | PCBA |
+| 3.9kΩ 0603 | basic | 2 | PCBA |
+| 15EDGVC-3.5-02P (header) | search Degson | 3 | Hand solder |
+| 15EDGKNM-3.5-02P (plug) | search Degson | 3 | Wire side |
+| 2×20 stacking header | — | 1 | Hand solder |
+
+The AT24C32D write-protect pin should have a jumper pad or test point so it can be pulled low to flash, then left pulled high permanently after.
+
diff --git a/hardware/.gitignore b/hardware/.gitignore
new file mode 100644
index 0000000..9d5df93
--- /dev/null
+++ b/hardware/.gitignore
@@ -0,0 +1,40 @@
+# For PCBs designed using KiCad: https://www.kicad.org/
+# Format documentation: https://kicad.org/help/file-formats/
+
+# Temporary files
+*.000
+*.bak
+*.bck
+*.kicad_pcb-bak
+*.kicad_sch-bak
+*-backups
+*-cache*
+*-bak
+*-bak*
+*~
+~*
+_autosave-*
+\#auto_saved_files\#
+*.tmp
+*-save.pro
+*-save.kicad_pcb
+fp-info-cache
+~*.lck
+\#auto_saved_files#
+
+# Netlist files (exported from Eeschema)
+*.net
+
+# Autorouter files (exported from Pcbnew)
+*.dsn
+*.ses
+
+# Exported BOM files
+*.xml
+*.csv
+
+# Archived Backups (KiCad 6.0)
+**/*-backups/*.zip
+
+# Local project settings
+*.kicad_prl
diff --git a/hardware/can-hat.kicad_pcb b/hardware/can-hat.kicad_pcb
new file mode 100644
index 0000000..17d5483
--- /dev/null
+++ b/hardware/can-hat.kicad_pcb
@@ -0,0 +1,2 @@
+(kicad_pcb (version 20241229) (generator "pcbnew") (generator_version "9.0")
+)
diff --git a/hardware/can-hat.kicad_pro b/hardware/can-hat.kicad_pro
new file mode 100644
index 0000000..bc354da
--- /dev/null
+++ b/hardware/can-hat.kicad_pro
@@ -0,0 +1,219 @@
+{
+ "board": {
+ "3dviewports": [],
+ "design_settings": {
+ "defaults": {},
+ "diff_pair_dimensions": [],
+ "drc_exclusions": [],
+ "rules": {},
+ "track_widths": [],
+ "via_dimensions": []
+ },
+ "ipc2581": {
+ "dist": "",
+ "distpn": "",
+ "internal_id": "",
+ "mfg": "",
+ "mpn": ""
+ },
+ "layer_pairs": [],
+ "layer_presets": [],
+ "viewports": []
+ },
+ "boards": [],
+ "cvpcb": {
+ "equivalence_files": []
+ },
+ "erc": {
+ "erc_exclusions": [],
+ "meta": {
+ "version": 0
+ },
+ "pin_map": [
+ [0,0,0,0,0,0,1,0,0,0,0,2],
+ [0,2,0,1,0,0,1,0,2,2,2,2],
+ [0,0,0,0,0,0,1,0,1,0,1,2],
+ [0,1,0,0,0,0,1,1,2,1,1,2],
+ [0,0,0,0,0,0,1,0,0,0,0,2],
+ [0,0,0,0,0,0,0,0,0,0,0,2],
+ [1,1,1,1,1,0,1,1,1,1,1,2],
+ [0,0,0,1,0,0,1,0,0,0,0,2],
+ [0,2,1,2,0,0,1,0,2,2,2,2],
+ [0,2,0,1,0,0,1,0,2,0,0,2],
+ [0,2,1,1,0,0,1,0,2,0,0,2],
+ [2,2,2,2,2,2,2,2,2,2,2,2]
+ ],
+ "rule_severities": {
+ "bus_definition_conflict": "error",
+ "bus_entry_needed": "error",
+ "bus_to_bus_conflict": "error",
+ "bus_to_net_conflict": "error",
+ "different_unit_footprint": "error",
+ "different_unit_net": "error",
+ "duplicate_reference": "error",
+ "duplicate_sheet_names": "error",
+ "endpoint_off_grid": "warning",
+ "extra_units": "error",
+ "footprint_filter": "ignore",
+ "footprint_link_issues": "warning",
+ "four_way_junction": "ignore",
+ "global_label_dangling": "warning",
+ "hier_label_mismatch": "error",
+ "label_dangling": "error",
+ "label_multiple_wires": "warning",
+ "lib_symbol_issues": "warning",
+ "lib_symbol_mismatch": "warning",
+ "missing_bidi_pin": "warning",
+ "missing_input_pin": "warning",
+ "missing_power_pin": "error",
+ "missing_unit": "warning",
+ "multiple_net_names": "warning",
+ "net_not_bus_member": "warning",
+ "no_connect_connected": "warning",
+ "no_connect_dangling": "warning",
+ "pin_not_connected": "error",
+ "pin_not_driven": "error",
+ "pin_to_pin": "warning",
+ "power_pin_not_driven": "error",
+ "same_local_global_label": "warning",
+ "similar_label_and_power": "warning",
+ "similar_labels": "warning",
+ "similar_power": "warning",
+ "simulation_model_issue": "ignore",
+ "single_global_label": "ignore",
+ "unannotated": "error",
+ "unconnected_wire_endpoint": "warning",
+ "undefined_netclass": "error",
+ "unit_value_mismatch": "error",
+ "unresolved_variable": "error",
+ "wire_dangling": "error"
+ }
+ },
+ "libraries": {
+ "pinned_footprint_libs": [],
+ "pinned_symbol_libs": []
+ },
+ "meta": {
+ "filename": "can-hat.kicad_pro",
+ "version": 3
+ },
+ "net_settings": {
+ "classes": [
+ {
+ "bus_width": 12,
+ "clearance": 0.2,
+ "diff_pair_gap": 0.25,
+ "diff_pair_via_gap": 0.25,
+ "diff_pair_width": 0.2,
+ "line_style": 0,
+ "microvia_diameter": 0.3,
+ "microvia_drill": 0.1,
+ "name": "Default",
+ "pcb_color": "rgba(0, 0, 0, 0.000)",
+ "priority": 2147483647,
+ "schematic_color": "rgba(0, 0, 0, 0.000)",
+ "track_width": 0.2,
+ "via_diameter": 0.6,
+ "via_drill": 0.3,
+ "wire_width": 6
+ }
+ ],
+ "meta": {
+ "version": 4
+ },
+ "net_colors": null,
+ "netclass_assignments": null,
+ "netclass_patterns": []
+ },
+ "pcbnew": {
+ "last_paths": {
+ "gencad": "",
+ "idf": "",
+ "netlist": "",
+ "plot": "",
+ "pos_files": "",
+ "specctra_dsn": "",
+ "step": "",
+ "svg": "",
+ "vrml": ""
+ },
+ "page_layout_descr_file": ""
+ },
+ "schematic": {
+ "annotate_start_num": 0,
+ "bom_export_filename": "${PROJECTNAME}.csv",
+ "bom_fmt_presets": [],
+ "bom_fmt_settings": {
+ "field_delimiter": ",",
+ "keep_line_breaks": false,
+ "keep_tabs": false,
+ "name": "CSV",
+ "ref_delimiter": ",",
+ "ref_range_delimiter": "",
+ "string_delimiter": "\""
+ },
+ "bom_presets": [],
+ "bom_settings": {
+ "exclude_dnp": false,
+ "fields_ordered": [
+ {"group_by": false, "label": "Reference", "name": "Reference", "show": true},
+ {"group_by": false, "label": "Qty", "name": "${QUANTITY}", "show": true},
+ {"group_by": true, "label": "Value", "name": "Value", "show": true},
+ {"group_by": true, "label": "DNP", "name": "${DNP}", "show": true},
+ {"group_by": true, "label": "Exclude from BOM", "name": "${EXCLUDE_FROM_BOM}", "show": true},
+ {"group_by": true, "label": "Exclude from Board", "name": "${EXCLUDE_FROM_BOARD}", "show": true},
+ {"group_by": true, "label": "Footprint", "name": "Footprint", "show": true},
+ {"group_by": false, "label": "Datasheet", "name": "Datasheet", "show": true}
+ ],
+ "filter_string": "",
+ "group_symbols": true,
+ "include_excluded_from_bom": true,
+ "name": "Default Editing",
+ "sort_asc": true,
+ "sort_field": "Reference"
+ },
+ "connection_grid_size": 50.0,
+ "drawing": {
+ "dashed_lines_dash_length_ratio": 12.0,
+ "dashed_lines_gap_length_ratio": 3.0,
+ "default_line_thickness": 6.0,
+ "default_text_size": 50.0,
+ "field_names": [],
+ "intersheets_ref_own_page": false,
+ "intersheets_ref_prefix": "",
+ "intersheets_ref_short": false,
+ "intersheets_ref_show": false,
+ "intersheets_ref_suffix": "",
+ "junction_size_choice": 3,
+ "label_size_ratio": 0.375,
+ "operating_point_overlay_i_precision": 3,
+ "operating_point_overlay_i_range": "~A",
+ "operating_point_overlay_v_precision": 3,
+ "operating_point_overlay_v_range": "~V",
+ "overbar_offset_ratio": 1.23,
+ "pin_symbol_size": 25.0,
+ "text_offset_ratio": 0.15
+ },
+ "legacy_lib_dir": "",
+ "legacy_lib_list": [],
+ "meta": {
+ "version": 1
+ },
+ "net_format_name": "",
+ "page_layout_descr_file": "",
+ "plot_directory": "",
+ "space_save_all_events": true,
+ "spice_current_sheet_as_root": false,
+ "spice_external_command": "spice \"%I\"",
+ "spice_model_current_sheet_as_root": true,
+ "spice_save_all_currents": false,
+ "spice_save_all_dissipations": false,
+ "spice_save_all_voltages": false,
+ "subpart_first_id": 65,
+ "subpart_id_separator": 0
+ },
+ "sheets": [
+ ["bfdea6a0-b5c8-4489-9fa0-a972c3ff35f2", "Root"]
+ ],
+ "text_variables": {}
+}
diff --git a/hardware/can-hat.kicad_sch b/hardware/can-hat.kicad_sch
new file mode 100644
index 0000000..888a48e
--- /dev/null
+++ b/hardware/can-hat.kicad_sch
@@ -0,0 +1,14 @@
+(kicad_sch
+ (version 20250114)
+ (generator "eeschema")
+ (generator_version "9.0")
+ (uuid "bfdea6a0-b5c8-4489-9fa0-a972c3ff35f2")
+ (paper "A4")
+ (lib_symbols
+ )
+ (sheet_instances
+ (path "/"
+ (page "1")
+ )
+ )
+)
diff --git a/hardware/fp-lib-table b/hardware/fp-lib-table
new file mode 100644
index 0000000..9328200
--- /dev/null
+++ b/hardware/fp-lib-table
@@ -0,0 +1,4 @@
+(fp_lib_table
+ (version 7)
+ (lib (name "Project_Parts")(type "KiCad")(uri "${KIPRJMOD}/footprints")(options "")(descr ""))
+)
diff --git a/hardware/sym-lib-table b/hardware/sym-lib-table
new file mode 100644
index 0000000..993ca18
--- /dev/null
+++ b/hardware/sym-lib-table
@@ -0,0 +1,3 @@
+(sym_lib_table
+ (version 7)
+)