├── LICENSE
├── README.md
├── env.bat
├── payloads
├── emmc-dump
│ ├── Makefile
│ ├── linker.x
│ └── source
│ │ ├── include
│ │ ├── brom1k.h
│ │ ├── brom1k_linker.x
│ │ ├── bromcem.h
│ │ └── bromcem_linker.x
│ │ ├── rpcp.c
│ │ └── rpcp.h
├── keydumper
│ ├── Makefile
│ ├── linker.x
│ └── source
│ │ ├── rpcp.c
│ │ └── rpcp.h
├── keyglitch
│ ├── Makefile
│ ├── linker.x
│ └── source
│ │ ├── rpcp.c
│ │ └── rpcp.h
└── stage1
│ └── sd
│ ├── Makefile
│ ├── cfg_4v2.x
│ ├── stage1.s
│ ├── stage1_4v2.bin
│ └── stage1_4v2.elf
├── pcb
└── generic
│ ├── fab
│ ├── try2-B_Cu.gbr
│ ├── try2-B_Mask.gbr
│ ├── try2-B_Paste.gbr
│ ├── try2-B_Silkscreen.gbr
│ ├── try2-Edge_Cuts.gbr
│ ├── try2-F_Cu.gbr
│ ├── try2-F_Mask.gbr
│ ├── try2-F_Paste.gbr
│ ├── try2-F_Silkscreen.gbr
│ ├── try2-NPTH-drl_map.gbr
│ ├── try2-NPTH.drl
│ ├── try2-PTH-drl_map.gbr
│ ├── try2-PTH.drl
│ ├── try2-fab.zip
│ └── try2-job.gbrjob
│ ├── fp-info-cache
│ ├── try2-backups
│ └── try2-2023-12-09_155253.zip
│ ├── try2.kicad_pcb
│ ├── try2.kicad_prl
│ ├── try2.kicad_pro
│ └── try2.kicad_sch
├── pics
├── laview-cutoff.png
├── laview-uptoread.png
└── sdboot_sram.png
├── sdboot.py
├── sdwire.py
├── tools
├── mkfake.c
└── snvs.py
└── wiring
├── n_mos.png
├── wires-pch1k.png
├── wires-vte-back.png
├── wires-vte-front.png
└── wiring.png
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Sebastian Kubala
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # psp2sdboot
2 | This repo contains guides, payloads, schematics and scripts for use with PSP2's "SD boot mode".
3 |
4 | ## About
5 | #### JIG
6 | On all Playstation Vita/TV units the System Controller ("syscon", "ernie") has an RPC server activated by a specific hardware circuit. When activated, syscon listens over UART for commands that can range from simple diag checks, fuse reads, calibrations, to special features such as NVS R/W that require authorization using handshakes with secret keys. More information as well as circuit schematics and RPC clients can be found in the [bert](https://github.com/SKGleba/bert) repository.
7 | #### GC/SD boot
8 | An authorized JIG interface client can trigger a special, alternative boot mode inside the BootROM. In this mode, which we dubbed "sdboot", a signed second_loader.enp is loaded from an unauthenticated MMC/SD storage inside the GameCard slot and decrypted using an alternative set of per-console keys.
9 | #### Vulnerability
10 | In sdboot, after copying itself from 0x40000 to 0x5c000, BootROM first reads a single block (0x200 bytes) from the external storage to 0x40000, verifies if second_loader offset and size fields are valid, then reads second_loader to 0x40000.
11 | The issue is that the exception vectors are hardcoded to 0x40000, so any exceptions in BootROM during (or after) second_loader is read will cause a "jump" to the read data - resulting in arbitrary code execution.
12 | #### Code execution
13 | A simple way to trigger an exception is to perform a Fault Injection attack. Because all faults/exceptions result in code execution, the FI setup does not need to be precise, and can be approached in a spray-and-pray manner.
14 | This project makes use of Voltage Fault Injection, specifically the "crowbar" method, performed by a low cost setup with the Teensy 4 mcu system at heart.
15 | The result is a consistent BootROM code execution of a arbitrary code blob loaded from an unauthenticated MMC/SD storage inside the GameCard slot.
16 | #### BootROM RPC
17 | With psp2sdboot, the default code blob is [bob](https://github.com/SKGleba/bob), it starts an RPC server that can be used for research or executing additional specialized payloads with functionality such as key retrieval, data dumping, unbricking and more.
18 | #### Supported units
19 | - DEM-3000 : **only IRT-002**
20 | - Due to an unknown JIG interface-enable procedure on IRT-001 / "slideys"
21 | - CEM-3000 : **supported**
22 | - PCH-1000 : **supported**
23 | - VTE-1000 : **supported**
24 | - PCH-2000 : **not yet supported**
25 | - Due to lack of success triggering exceptions with Voltage Fault Injection
26 |
27 | ## Setup
28 | ### Requirements
29 | - a working [syscon JIG setup](https://github.com/SKGleba/bert)
30 | - logic analyzer with at least two channels, a simple USB 8ch saleae/clone should work
31 | - GC-SD adapter such as ["sd2vita"](https://www.bing.com/search?q=sd2vita), with a micro/sd up to 2TiB
32 | - consistent, configurable pulse generator that can set 1v+ for 100ns or less.
33 | - for this project, the [Teensy 4.0](https://www.pjrc.com/store/teensy40.html) / [Teensy 4.1](https://www.pjrc.com/store/teensy41.html) mcu board was chosen for its high speed, tight-coupled memory and gpio controllers
34 | - a [chipwhisperer](https://www.newae.com/chipwhisperer) (lite) was also successfully used in this project's early iterations
35 | - fast switching, logic level n-mosfet
36 | - depending on your soldering skills/setup, a breakout board might be a good idea
37 | - for this project, [IRLML2502](https://www.infineon.com/cms/en/product/power/mosfet/n-channel/irlml2502/) and [IRLML6246](https://www.infineon.com/cms/en/product/power/mosfet/n-channel/irlml6246/) were used
38 | - 3.3v usb<->uart adapter for communicating with the Teensy 4 mcu board
39 | ### Teensy
40 | - Connect the Teensy 4 to a PC, enter bootloader mode
41 | - Flash the latest build of [teensy4vfi](https://github.com/SKGleba/teensy4vfi) using [Teensy Loader](https://www.pjrc.com/teensy/loader.html)
42 | - Connect the usb<->uart adapter
43 | - PC TX -> Teensy pad 0 (RX)
44 | - PC RX -> Teensy pad 1 (TX)
45 | - GND
46 | ### Solder points
47 | There are at least two (magnet) wire solder points - Core_VDD (orange) and GC_dat0 (yellow).
48 | - PCH-1000/PDEL-1000/CEM-3000/DEM-3000: [front](wiring/wires-pch1k.png)
49 | - VTE-1000: [front](wiring/wires-vte-front.png) | [back](wiring/wires-vte-back.png)
50 | - It is recommended to add a separate GND wire for the MOSFET.
51 | ### Wiring
52 | The MOSFET wires should be insulated and kept as short as possible, you can even solder its legs directly to the Core_VDD capacitor.
53 | 
54 | ### Software
55 | The original setup was Windows + WSL1, but the instructions should work fine on Windows, Linux and MacOS.
56 | #### Prerequisites
57 | - Python 3.10+
58 | - + pyserial, pycryptodome
59 | - GCC
60 | - [Saleae Logic](https://www.saleae.com/downloads/)
61 | - or whatever software your Logic Analyzer uses
62 | - local copies of [psp2sdboot](https://github.com/SKGleba/psp2sdboot), [teensy4vfi](https://github.com/SKGleba/teensy4vfi), [bob](https://github.com/SKGleba/bob), and [bert](https://github.com/SKGleba/bert)
63 | - (optional) [mepsdk](https://github.com/TeamMolecule/mepsdk)
64 | #### Environment
65 | The "root", working directory should be a local copy of this repository.
66 | - compile ```tools/mkfake.c``` with GCC
67 | - create symlinks for ```bob/bob_rpc.py```, ```teensy4vfi/teensy_rpc.py```, and ```bert/bert.py```
68 | - create a ```bob``` directory in ```payloads/```, and copy there the bob build and header files
69 | - ```bob/build/*``` to ```payloads/bob/```
70 | - ```bob/source/include``` to ```payloads/bob/```
71 | - "set" the environment by running the provided ```env.bat```
72 | - this simply sets a bunch of aliases
73 | ### microSD card
74 | A raw SD card image can be created using the previously compiled mkfake utility, the syntax is ```mkfake -o ``` where:
75 | - *code_blob* is bob's glitch build - ```payloads/bob/bob_glitch.bin```
76 | - *output* will be the SD card image
77 | The prepared SD card must then be inserted in the target's GC slot.
78 |
79 | ## SD Boot
80 | The provided *sdboot.py* is a python script that loops reboot->glitch->check until *bob* is successfully loaded and executed.
81 | Its accepted arguments/parameters and their descriptions can be listed with ```sdboot help```.
82 | ### Calibration
83 | The first step is determining optimal timing parameters range for the main sdboot script, which will then find the more precise/consistent glitch timings.
84 | #### The "threshold" width
85 | The *width* of a glitch that always causes an unrecoverable crash is called the "threshold", this should be the upper *width* boundary - sdboot's *width_max* argument.
86 | It can be determined by the following procedure:
87 | 1. ```sdboot width=100 width_max=100000 width_step=100```
88 | - note the *width* at which *dat0* cut off
89 | - if there is no *dat0* cut off until 100000, the setup is wrong/faulty
90 | 2. ```sdboot width= width_max= width_step=20```
91 | - repeat at least 5 times
92 | - note the *width* at which *dat0* __always__ cuts off, this is the "threshold"
93 | 3. If the "threshold" is below 200, it might indicate a faulty circuit, slow mosfet, or a very isolated/clean setup.
94 | 
95 | #### The "*up_to_read*" offset
96 | *up_to_read* is a special 0-width glitch queued to find an empty sector read op, which compensates for a high SD init/read jitter.
97 | The idea is that as long as it lands in the middle of an empty sector being read (*dat0* pulled down), the actual fault injection glitch can be precisely triggered and timed from *dat0* going up.
98 | It can be determined by altering the following command: ```sdboot up_to_read_mark=100 up_to_read=298400000```. Change *up_to_read* until the *mosfet* line spike happens around the middle of an empty sector read.
99 | 
100 | ### Glitching
101 | The second step is running the sdboot python script, and letting it find a correct combination of *offset* and *width* parameters
102 | Script arguments are based on the values found during the Calibration step, with an added broad *offset* range:
103 | ```sdboot up_to_read= width= width_max= width_step=20 offset=100 offset_max=10000 offset_mult=10 offset_step=40```
104 | - *offset** parameters should initially be broad, with further loops being more precise (eg *offset_mult=1*)
105 | - if the threshold is below 500, *width_step*=10 might be a better choice
106 | - if the starting *width* (threshold - (2 x *width_step*)) is observed to cut off dat0, the starting *width* should be decreased by *width_step*-sized decrements
107 | - ultimately it depends on luck, it might take hours or even days to find a working *offset* and *width* pair
108 | - in case of success, a ```got sd boot: off=[] width=``` message will be displayed and the script will stop
109 |
110 | ## Post-Exploitation
111 | After bob presence is confirmed with ```bob ping```, you can use the bob_rpc script to conduct further research or copy and run MeP payloads. Available RPC commands can be listed by calling the script without any arguments - ```bob```.
112 | 
113 | ### RPC payloads
114 | You should put your custom payloads inside the ```payloads/``` directory.
115 | They can statically link to bob and bootrom for basic funtionality, see the [linker example](payloads/emmc-dump/linker.x). Headers can be found in ```payloads/bob/include/```.
116 | Payloads can be executed anywhere in the physical memory, keep in mind that some is uninitialized - eg DRAM.
117 | - copy: ```file_send ```
118 | - exec: ```exec ```, where arg2_data is a buffer passed as arg2
119 | - extended exec: ```exece ```, up to 8 args total
120 | ### Key extraction
121 | Provided is a basic keydumper - ```payloads/keydumper``` - it can be used to get the SLSK enc/dec key partials, SNVS enc/dec keys, and the SMI encryption keys.
122 | - If you do not have SoC TX wired, you can dump the key buffer from 0x1f850000 to a file using ```bob file_dump```.
123 | ### Storage R/W
124 | The provided eMMC dumper - ```payloads/emmc-dump``` - contains code to read/write eMMC as well as the SD card. It can be used for larger data handling, eMMC dump/unbrick, crypto research and more.
125 | - By default, the emmc dumper uses DRAM which must be first initialized. Until reimplemented, the code/binary can be copied from second_loader.
126 | - You can just use a different memory region, eg SPAD128K
127 | ### Unbricking
128 | At the time of writing, there is no single tool to diagnose and fix common "bricks".
129 | You need to get the boot log, read [henkaku wiki](https://wiki.henkaku.xyz/) to find the probable brick cause, and use the provided tools/payloads to fix the console.
130 | - SoC TX - for boot log - can be redirected to Syscon TX / USB TX by changing nvs byte 0x481 from 0xFF to 0x00, ```nvs-write 0x481 0x1 00```
131 | - some more uncommon bricks might require you to reverse engineer the OS, i recommend [Ghidra](https://ghidra-sre.org/)
132 | - [Vita Loader for Ghidra](https://github.com/CreepNT/VitaLoaderRedux)
133 | - [sceutils](https://github.com/TeamMolecule/sceutils) to decrypt the firmware
134 |
135 | ## Credits
136 | This project was made in collaboration with Proxima and Mathieulh.
137 | Additional thanks to:
138 | - xyz - for help with hardware work, research, intial glitching, tests, spoonfeeding and handholding
139 | - yifanlu and Team Molecule, whose work served as the foundation for this project
140 | - all [bert](https://github.com/SKGleba/bert) contributors
141 | - [henkaku wiki](https://wiki.henkaku.xyz) contributors
142 |
143 |
--------------------------------------------------------------------------------
/env.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | prompt vsh$$$S
4 | DOSKEY bert=python bert.py $*
5 | DOSKEY bob=python bob_rpc.py $*
6 | DOSKEY misc=python misc.py $*
7 | DOSKEY alice=python alice_rpc.py $*
8 | DOSKEY teensy=python teensy_rpc.py $*
9 | DOSKEY sdboot=python sdboot.py $*
10 | DOSKEY sdwire=python sdwire.py $*
11 |
12 | DOSKEY info=python bert.py info $*
13 | DOSKEY mode=python bert.py mode $*
14 | DOSKEY unlock-1=python bert.py unlock-1 $*
15 | DOSKEY lock-1=python bert.py lock-1 $*
16 | DOSKEY power-off=python bert.py power-off $*
17 | DOSKEY power-on=python bert.py power-on $*
18 | DOSKEY power-fsm=python bert.py power-fsm $*
19 | DOSKEY get-power=python bert.py get-power $*
20 | DOSKEY handshake-0=python bert.py handshake-0 $*
21 | DOSKEY handshake-1=python bert.py handshake-1 $*
22 | DOSKEY handshake-E=python bert.py handshake-E $*
23 | DOSKEY get-kr600=python bert.py get-kr600 $*
24 | DOSKEY maika-0=python bert.py maika-0 $*
25 | DOSKEY nvs-read=python bert.py nvs-read $*
26 | DOSKEY nvs-read-range=python bert.py nvs-read-range $*
27 | DOSKEY nvs-write=python bert.py nvs-write $*
28 | DOSKEY confzz-read=python bert.py confzz-read $*
29 | DOSKEY confzz-read-range=python bert.py confzz-read-range $*
30 | DOSKEY confzz-write=python bert.py confzz-write $*
31 | DOSKEY confzz-rw=python bert.py confzz-rw $*
32 | DOSKEY confzz-ro=python bert.py confzz-ro $*
33 | DOSKEY confzz-apply=python bert.py confzz-apply $*
34 | DOSKEY invs-read-id=python bert.py invs-read-id $*
35 | DOSKEY invs-read=python bert.py invs-read $*
36 | DOSKEY invs-read-range=python bert.py invs-read-range $*
37 | DOSKEY wipe-nvs=python bert.py wipe-nvs $*
38 | DOSKEY reset=python bert.py reset $*
39 | DOSKEY reset-hard=python bert.py reset-hard $*
40 | DOSKEY kill=python bert.py kill $*
41 | DOSKEY reset-bic=python bert.py reset-bic $*
42 | DOSKEY unlock-4=python bert.py unlock-4 $*
43 | DOSKEY lock-4=python bert.py lock-4 $*
44 | DOSKEY unlock-qa=python bert.py unlock-qa $*
45 | DOSKEY unlock-nvs=python bert.py unlock-nvs $*
46 | DOSKEY unlock-sdboot=python bert.py unlock-sdboot $*
47 | DOSKEY unlock-all=python bert.py unlock-all $*
48 | DOSKEY shbuf-read=python bert.py shbuf-read $*
49 | DOSKEY shbuf-write=python bert.py shbuf-write $*
50 |
51 | if %1.==alice. (
52 | echo load rpc env for alice
53 | DOSKEY read32=python alice_rpc.py read32 $*
54 | DOSKEY write32=python alice_rpc.py write32 $*
55 | DOSKEY memset=python alice_rpc.py memset $*
56 | DOSKEY memset32=python alice_rpc.py memset32 $*
57 | DOSKEY memcpy=python alice_rpc.py memcpy $*
58 | DOSKEY delay=python alice_rpc.py delay $*
59 | DOSKEY hexdump=python alice_rpc.py hexdump $*
60 | DOSKEY load_sk=python alice_rpc.py load_sk $*
61 | DOSKEY bob_read32=python alice_rpc.py bob_read32 $*
62 | DOSKEY bob_write32=python alice_rpc.py bob_write32 $*
63 | DOSKEY copyto=python alice_rpc.py copyto $*
64 | DOSKEY copyfrom=python alice_rpc.py copyfrom $*
65 | DOSKEY exec=python alice_rpc.py exec $*
66 | DOSKEY file_send=python alice_rpc.py file_send $*
67 | DOSKEY file_dump=python alice_rpc.py file_dump $*
68 | DOSKEY file_append=python alice_rpc.py file_append $*
69 | DOSKEY sdinit=python alice_rpc.py init_storage 0x0 $*
70 | DOSKEY sdread=python alice_rpc.py read_sd $*
71 | DOSKEY sdwrite=python alice_rpc.py write_sd $*
72 | DOSKEY emmcinit=python alice_rpc.py init_storage 0x1 $*
73 | DOSKEY emmcread=python alice_rpc.py read_emmc $*
74 | DOSKEY emmcwrite=python alice_rpc.py write_emmc $*
75 | ) else (
76 | echo load rpc env for bob
77 | DOSKEY read32=python bob_rpc.py read32 $*
78 | DOSKEY write32=python bob_rpc.py write32 $*
79 | DOSKEY memset=python bob_rpc.py memset $*
80 | DOSKEY memset32=python bob_rpc.py memset32 $*
81 | DOSKEY memcpy=python bob_rpc.py memcpy $*
82 | DOSKEY delay=python bob_rpc.py delay $*
83 | DOSKEY hexdump=python bob_rpc.py hexdump $*
84 | DOSKEY arm_reset=python bob_rpc.py arm_reset $*
85 | DOSKEY set_xctable=python bob_rpc.py set_xctable $*
86 | DOSKEY set_ints=python bob_rpc.py set_ints $*
87 | DOSKEY alice_rpc=python bob_rpc.py alice_rpc $*
88 | DOSKEY alice_task_status=python bob_rpc.py alice_task_status $*
89 | DOSKEY copyto=python bob_rpc.py copyto $*
90 | DOSKEY copyfrom=python bob_rpc.py copyfrom $*
91 | DOSKEY exec=python bob_rpc.py exec $*
92 | DOSKEY exece=python bob_rpc.py exece $*
93 | DOSKEY file_send=python bob_rpc.py file_send $*
94 | DOSKEY file_dump=python bob_rpc.py file_dump $*
95 | DOSKEY file_append=python bob_rpc.py file_append $*
96 | DOSKEY alice_schedule_task=python bob_rpc.py alice_schedule_task $*
97 | DOSKEY regina=python regina_rpc.py $*
98 | DOSKEY rgn=python regina_rpc.py $*
99 | DOSKEY sdinit=python bob_rpc.py init_storage 0x0 $*
100 | DOSKEY sdread=python bob_rpc.py read_sd $*
101 | DOSKEY sdwrite=python bob_rpc.py write_sd $*
102 | DOSKEY emmcinit=python bob_rpc.py init_storage 0x1 $*
103 | DOSKEY emmcread=python bob_rpc.py read_emmc $*
104 | DOSKEY emmcwrite=python bob_rpc.py write_emmc $*
105 | )
106 |
107 | DOSKEY test=python misc.py test $*
108 | DOSKEY maika=python misc.py maika $*
109 | DOSKEY rmem=python misc.py rmem $*
110 | DOSKEY wmem=python misc.py wmem $*
111 | DOSKEY xmem=python misc.py xmem $*
112 | DOSKEY enol=python misc.py enol $*
113 | DOSKEY disol=python misc.py disol $*
--------------------------------------------------------------------------------
/payloads/emmc-dump/Makefile:
--------------------------------------------------------------------------------
1 | PREFIX=mep-elf-
2 | CC=$(PREFIX)gcc
3 | ADDEFS=
4 | CFLAGS=-fno-delete-null-pointer-checks -nostdlib -fno-optimize-sibling-calls -Os -std=gnu99 -fno-inline -fstrict-volatile-bitfields -fno-builtin -ml
5 | LD=$(PREFIX)gcc
6 | LDFLAGS=-Wl,-T linker.x -nodefaultlibs -nostdlib -nostartfiles
7 | OBJCOPY=$(PREFIX)objcopy
8 | OBJCOPYFLAGS=
9 |
10 | SRCS=$(wildcard source/*.c)
11 | OBJ=$(SRCS:.c=.o)
12 |
13 | all: output/rpcp.bin
14 |
15 | %.o: %.c
16 | $(CC) -S -o $@.asm $< $(CFLAGS) $(ADDEFS)
17 | $(CC) -c -o $@ $< $(CFLAGS) $(ADDEFS)
18 |
19 | rpcp.elf: $(OBJ)
20 | $(LD) -o $@ $^ $(LDFLAGS)
21 |
22 | %.bin: %.elf
23 | $(OBJCOPY) -O binary $< $@
24 |
25 | output/rpcp.bin: rpcp.bin
26 | -rm source/*.o
27 | -rm -rf output
28 | mkdir output
29 | mkdir output/asm
30 | mv source/*.asm output/asm/
31 | mv rpcp.elf output/rpcp.elf
32 | mv rpcp.bin output/rpcp.bin
33 |
34 | clean:
35 | -rm source/*.o
36 | -rm source/*.ao
37 | -rm source/*.asm
38 | -rm -rf output
--------------------------------------------------------------------------------
/payloads/emmc-dump/linker.x:
--------------------------------------------------------------------------------
1 | SECTIONS
2 | {
3 | INCLUDE source/include/brom1k_linker.x
4 | INCLUDE ../bob/bob_linker.x
5 | . = 0x0004a000;
6 | .text : { *(.text.rpcp) *(.text .text.* .gnu.linkonce.t.*) }
7 | .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
8 | .data : { *(.data .data.* .gnu.linkonce.d.*) }
9 | .bss : { *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) }
10 | }
--------------------------------------------------------------------------------
/payloads/emmc-dump/source/include/brom1k.h:
--------------------------------------------------------------------------------
1 | #ifndef __BROM1K_H__
2 | #define __BROM1K_H__
3 |
4 | int brom_init_storages(int id, int someflag);
5 | int brom_init_mmc(int id, void* ctx_out);
6 | int brom_init_sd(int id, void* ctx_out);
7 | int brom_read_sector_sd(int ctx, uint32_t sector, void* dst, uint32_t count);
8 | int brom_read_sector_mmc(int ctx, uint32_t sector, void* dst, uint32_t count);
9 |
10 |
11 | #define BROM_RD_START 0x0005eaa8
12 | #define BROM_RD_SIZE 0x1548
13 |
14 |
15 | /*
16 | SD read => SD write conversion
17 | 32bit patches
18 | */
19 | /* # single-read arg0
20 | 0005e1a6 14 e4 0d 00 bnei r4,0x1 ,0x0005e1c0
21 | 0005e1aa 11 5c mov r12 ,0x11
22 | */
23 | #define BROM_SDREAD_S_ARG0 0x5e1a8
24 | #define BROM_SDREAD_S_ARG0_RP 0x5c11000d
25 | #define BROM_SDREAD_S_ARG0_WP 0x5c18000d // 0x11 -> 0x18
26 | /* # single-read arg3
27 | 0005e1ac 01 cb 14 01 mov r11 ,0x114
28 | 0005e1b0 06 4b sw r11 ,0x4 (sp)
29 | */
30 | #define BROM_SDREAD_S_ARG3 0x5e1ac
31 | #define BROM_SDREAD_S_ARG3_RP 0x0114cb01
32 | #define BROM_SDREAD_S_ARG3_WP 0x0214cb01 // &0x100 -> &0x200
33 | /* # multi-read arg0
34 | 0005e1c4 06 4c sw r12 ,0x4 (sp)
35 | 0005e1c6 12 5c mov r12 ,0x12
36 | */
37 | #define BROM_SDREAD_M_ARG0 0x5e1c4
38 | #define BROM_SDREAD_M_ARG0_RP 0x5c124c06
39 | #define BROM_SDREAD_M_ARG0_WP 0x5c194c06 // 0x12 -> 0x19
40 | /* # multi-read arg3
41 | 0005e1c0 01 cc 14 09 mov r12 ,0x914
42 | */
43 | #define BROM_SDREAD_M_ARG3 0x5e1c0
44 | #define BROM_SDREAD_M_ARG3_RP 0x0914cc01
45 | #define BROM_SDREAD_M_ARG3_WP 0x0a14cc01 // &0x100 -> &0x200
46 | /* # check s/m mode
47 | 0005e1e8 0b 4c lw r12 ,0x8 (sp)
48 | 0005e1ea 12 5b mov r11 ,0x12
49 | */
50 | #define BROM_SDREAD_M_CHK1 0x5e1e8
51 | #define BROM_SDREAD_M_CHK1_RP 0x5b124c0b
52 | #define BROM_SDREAD_M_CHK1_WP 0x5b194c0b // (0x12) -> (0x19)
53 |
54 |
55 | /*
56 | MMC read => MMC write conversion
57 | 32bit patches
58 | */
59 | /* # calculate arg0
60 | 0005dbb0 0d 60 sltu3 r0, r0,0x1
61 | 0005dbb2 44 60 add r0,0x11
62 | */
63 | #define BROM_MMCREAD_CALC_ARG0 0x5dbb0
64 | #define BROM_MMCREAD_CALC_ARG0_RP 0x6044600d
65 | #define BROM_MMCREAD_CALC_ARG0_WP 0x6060600d // 0x11 -> 0x18
66 | /* # arg3
67 | 0005dba6 01 cb 14 01 mov r11 ,0x114
68 | 0005dbaa 06 4b sw r11 ,0x4 (sp)
69 | */
70 | #define BROM_MMCREAD_S_ARG3 0x5dba8
71 | #define BROM_MMCREAD_S_ARG3_RP 0x4b060114
72 | #define BROM_MMCREAD_S_ARG3_WP 0x4b060214 // &0x100 -> &0x200
73 | /* # check s/m mode
74 | 0005dbc8 2a 44 sw r4 ,0x28 (sp) # r4=nSectors
75 | 0005dbca 12 5a mov r10 ,0x12
76 | */
77 | #define BROM_MMCREAD_M_CHK1 0x5dbc8
78 | #define BROM_MMCREAD_M_CHK1_RP 0x5a12442a
79 | #define BROM_MMCREAD_M_CHK1_WP 0x5a19442a // (0x12) -> (0x19)
80 | /* # check2 s/m mode
81 | 0005dbf4 0b 4c lw r12 ,0x8 (sp)
82 | 0005dbf6 12 5b mov r11 ,0x12
83 | */
84 | #define BROM_MMCREAD_M_CHK2 0x5dbf4
85 | #define BROM_MMCREAD_M_CHK2_RP 0x5b124c0b
86 | #define BROM_MMCREAD_M_CHK2_WP 0x5b194c0b // (0x12) -> (0x19)
87 |
88 | #endif
--------------------------------------------------------------------------------
/payloads/emmc-dump/source/include/brom1k_linker.x:
--------------------------------------------------------------------------------
1 | .brom_imports : {
2 | brom_init_storages = 0x5cf88;
3 | brom_init_mmc = 0x5dc82;
4 | brom_init_sd = 0x5e252;
5 | brom_read_sector_mmc = 0x5db92;
6 | brom_read_sector_sd = 0x5e194;
7 | }
--------------------------------------------------------------------------------
/payloads/emmc-dump/source/include/bromcem.h:
--------------------------------------------------------------------------------
1 | #ifndef __BROM1K_H__
2 | #define __BROM1K_H__
3 |
4 | #include "../../../source/include/types.h"
5 |
6 | int brom_init_storages(int id, int someflag);
7 | int brom_init_mmc(int id, void* ctx_out);
8 | int brom_init_sd(int id, void* ctx_out);
9 | int brom_read_sector_sd(int ctx, uint32_t sector, void* dst, uint32_t count);
10 | int brom_read_sector_mmc(int ctx, uint32_t sector, void* dst, uint32_t count);
11 |
12 |
13 | #define BROM_RD_START 0x0005eb28
14 | #define BROM_RD_SIZE 0x14c8
15 |
16 |
17 | /*
18 | SD read => SD write conversion
19 | 32bit patches
20 | */
21 | /* # single-read arg0
22 | 0005e1a6 14 e4 0d 00 bnei r4,0x1 ,0x0005e1c0
23 | 0005e1aa 11 5c mov r12 ,0x11
24 | */
25 | #define BROM_SDREAD_S_ARG0 0x5e204
26 | #define BROM_SDREAD_S_ARG0_RP 0x5c11000d
27 | #define BROM_SDREAD_S_ARG0_WP 0x5c18000d // 0x11 -> 0x18
28 | /* # single-read arg3
29 | 0005e1ac 01 cb 14 01 mov r11 ,0x114
30 | */
31 | #define BROM_SDREAD_S_ARG3 0x5e208
32 | #define BROM_SDREAD_S_ARG3_RP 0x0114cb01
33 | #define BROM_SDREAD_S_ARG3_WP 0x0214cb01 // &0x100 -> &0x200
34 | /* # multi-read arg0
35 | 0005e1c4 06 4c sw r12 ,0x4 (sp)
36 | 0005e1c6 12 5c mov r12 ,0x12
37 | */
38 | #define BROM_SDREAD_M_ARG0 0x5e220
39 | #define BROM_SDREAD_M_ARG0_RP 0x5c124c06
40 | #define BROM_SDREAD_M_ARG0_WP 0x5c194c06 // 0x12 -> 0x19
41 | /* # multi-read arg3
42 | 0005e1c0 01 cc 14 09 mov r12 ,0x914
43 | */
44 | #define BROM_SDREAD_M_ARG3 0x5e21c
45 | #define BROM_SDREAD_M_ARG3_RP 0x0914cc01
46 | #define BROM_SDREAD_M_ARG3_WP 0x0a14cc01 // &0x100 -> &0x200
47 | /* # check s/m mode
48 | 0005e1e8 0b 4c lw r12 ,0x8 (sp)
49 | 0005e1ea 12 5b mov r11 ,0x12
50 | */
51 | #define BROM_SDREAD_M_CHK1 0x5e244
52 | #define BROM_SDREAD_M_CHK1_RP 0x5b124c0b
53 | #define BROM_SDREAD_M_CHK1_WP 0x5b194c0b // (0x12) -> (0x19)
54 |
55 |
56 | /*
57 | MMC read => MMC write conversion
58 | 32bit patches
59 | */
60 | /* # calculate arg0
61 | 0005dbb0 0d 60 sltu3 r0, r0,0x1
62 | 0005dbb2 44 60 add r0,0x11
63 | */
64 | #define BROM_MMCREAD_CALC_ARG0 0x5dc0c
65 | #define BROM_MMCREAD_CALC_ARG0_RP 0x6044600d
66 | #define BROM_MMCREAD_CALC_ARG0_WP 0x6060600d // 0x11 -> 0x18
67 | /* # arg3
68 | 0005dba6 01 cb 14 01 mov r11 ,0x114
69 | 0005dbaa 06 4b sw r11 ,0x4 (sp)
70 | */
71 | #define BROM_MMCREAD_S_ARG3 0x5dc04
72 | #define BROM_MMCREAD_S_ARG3_RP 0x4b060114
73 | #define BROM_MMCREAD_S_ARG3_WP 0x4b060214 // &0x100 -> &0x200
74 | /* # check s/m mode
75 | 0005dbc8 2a 44 sw r4 ,0x28 (sp) # r4=nSectors
76 | 0005dbca 12 5a mov r10 ,0x12
77 | */
78 | #define BROM_MMCREAD_M_CHK1 0x5dc24
79 | #define BROM_MMCREAD_M_CHK1_RP 0x5a12442a
80 | #define BROM_MMCREAD_M_CHK1_WP 0x5a19442a // (0x12) -> (0x19)
81 | /* # check2 s/m mode
82 | 0005dbf4 0b 4c lw r12 ,0x8 (sp)
83 | 0005dbf6 12 5b mov r11 ,0x12
84 | */
85 | #define BROM_MMCREAD_M_CHK2 0x5dc50
86 | #define BROM_MMCREAD_M_CHK2_RP 0x5b124c0b
87 | #define BROM_MMCREAD_M_CHK2_WP 0x5b194c0b // (0x12) -> (0x19)
88 |
89 | #endif
--------------------------------------------------------------------------------
/payloads/emmc-dump/source/include/bromcem_linker.x:
--------------------------------------------------------------------------------
1 | .brom_imports : {
2 | brom_init_storages = 0x5cf78;
3 | brom_init_mmc = 0x5dcde;
4 | brom_init_sd = 0x5e2ae;
5 | brom_read_sector_mmc = 0x5dbee;
6 | brom_read_sector_sd = 0x5e1f0;
7 | }
--------------------------------------------------------------------------------
/payloads/emmc-dump/source/rpcp.c:
--------------------------------------------------------------------------------
1 | #include "../../bob/include/types.h"
2 |
3 | #include "../../bob/include/defs.h"
4 | #include "../../bob/include/uart.h"
5 | #include "../../bob/include/debug.h"
6 | #include "../../bob/include/utils.h"
7 | #include "../../bob/include/clib.h"
8 | #include "../../bob/include/maika.h"
9 | #include "../../bob/include/crypto.h"
10 | #include "../../bob/include/spi.h"
11 | #include "../../bob/include/perv.h"
12 | #include "../../bob/include/gpio.h"
13 | #include "../../bob/include/i2c.h"
14 | #include "../../bob/include/paddr.h"
15 | #include "../../bob/include/ernie.h"
16 |
17 | #include "rpcp.h"
18 |
19 | #include "include/brom1k.h"
20 |
21 | #define TEST_COUNT 1
22 |
23 | #define COPY_BUFFER_ADDR MAIN_DRAM_OFFSET
24 | #define COPY_BUFFER_BLKSIZE 0x8000
25 | #define TARGET_OFFSET_BLOCK 0x100
26 |
27 | void prepare_emmc_regs(void) {
28 | vp 0xe3100124 |= 1;
29 | vp 0xe3101190 = 1;
30 | vp 0xe31020a0 = 1;
31 | while (!(vp 0xe31020a0)) {};
32 | vp 0xe31010a0 = 0;
33 | while ((vp 0xe31010a0)) {};
34 | vp 0xe3101190 = 0;
35 | while ((vp 0xe3101190)) {};
36 | vp 0xE0030024 = 0x1c0f020f;
37 | vp 0xe0070008 = 0x020e020f;
38 | vp 0xe0070000 = 1;
39 | }
40 |
41 | void prepare_sd_regs(void) {
42 | vp 0xe31020a4 = 1;
43 | while (!(vp 0xe31020a4)) {};
44 | vp 0xe31010a4 = 0;
45 | while ((vp 0xe31010a4)) {};
46 | }
47 |
48 | int prepare_emmc(uint32_t* ctx) {
49 | memset(BROM_RD_START, 0, BROM_RD_SIZE);
50 | ctx[0] = 0;
51 | ctx[1] = 0;
52 | int ret = brom_init_storages(0, (((vp 0xE0064060) >> 0x10) & 1) == 0);
53 | if (ret >= 0)
54 | ret = brom_init_mmc(0, ctx);
55 | return ret;
56 | }
57 |
58 | int prepare_sd(uint32_t* ctx) {
59 | memset(BROM_RD_START, 0, BROM_RD_SIZE);
60 | ctx[0] = 0;
61 | ctx[1] = 0;
62 | int ret = brom_init_storages(1, (((vp 0xE0064060) >> 0x11) & 1) == 0);
63 | if (ret >= 0)
64 | ret = brom_init_sd(1, ctx);
65 | return ret;
66 | }
67 |
68 | void set_sd_op_mode(bool write, bool notif) {
69 | if (notif)
70 | printf("[RPCP] set sd op mode: %s\n", write ? "WRITE" : "READ");
71 | if (write) {
72 | vp BROM_SDREAD_S_ARG0 = BROM_SDREAD_S_ARG0_WP; // single read arg0 0x11 -> 0x18
73 | vp BROM_SDREAD_S_ARG3 = BROM_SDREAD_S_ARG3_WP; // single read arg3 &0x100 -> &0x200
74 | vp BROM_SDREAD_M_ARG3 = BROM_SDREAD_M_ARG3_WP; // multi read arg3 &0x100 -> &0x200
75 | vp BROM_SDREAD_M_ARG0 = BROM_SDREAD_M_ARG0_WP; // multi read arg0 0x12 -> 0x19
76 | vp BROM_SDREAD_M_CHK1 = BROM_SDREAD_M_CHK1_WP; // check mulit read (0x12) -> check multi write (0x19)
77 | } else {
78 | vp BROM_SDREAD_S_ARG0 = BROM_SDREAD_S_ARG0_RP;
79 | vp BROM_SDREAD_S_ARG3 = BROM_SDREAD_S_ARG3_RP;
80 | vp BROM_SDREAD_M_ARG3 = BROM_SDREAD_M_ARG3_RP;
81 | vp BROM_SDREAD_M_ARG0 = BROM_SDREAD_M_ARG0_RP;
82 | vp BROM_SDREAD_M_CHK1 = BROM_SDREAD_M_CHK1_RP;
83 | }
84 | }
85 |
86 | void set_mmc_op_mode(bool write, bool notif) {
87 | if (notif)
88 | printf("[RPCP] set emmc op mode: %s\n", write ? "WRITE" : "READ");
89 | if (write) {
90 | vp BROM_MMCREAD_S_ARG3 = BROM_MMCREAD_S_ARG3_WP; // read arg3 &0x100 -> &0x200
91 | vp BROM_MMCREAD_CALC_ARG0 = BROM_MMCREAD_CALC_ARG0_WP; // read arg0 math 0x11 -> 0x18
92 | vp BROM_MMCREAD_M_CHK1 = BROM_MMCREAD_M_CHK1_WP; // check multi read (0x12) -> check multi write (0x19)
93 | vp BROM_MMCREAD_M_CHK2 = BROM_MMCREAD_M_CHK2_WP; // check2 multi read (0x12) -> check2 multi write (0x19)
94 | } else {
95 | vp BROM_MMCREAD_S_ARG3 = BROM_MMCREAD_S_ARG3_RP;
96 | vp BROM_MMCREAD_CALC_ARG0 = BROM_MMCREAD_CALC_ARG0_RP;
97 | vp BROM_MMCREAD_M_CHK1 = BROM_MMCREAD_M_CHK1_RP;
98 | vp BROM_MMCREAD_M_CHK2 = BROM_MMCREAD_M_CHK2_RP;
99 | }
100 | }
101 |
102 | int read_sd(uint32_t sector_off, void* dst, uint32_t sector_count) {
103 | uint32_t ctx[2];
104 | int ret = 0;
105 | printf("[RPCP] read_sd(%X, %X, %X)\n", sector_off, (uint32_t)dst, sector_count);
106 | ret = prepare_sd(ctx);
107 | if (ret < 0) {
108 | printf("[RPCP] read_sd: prepare sd failed: %X\n", ret);
109 | return ret;
110 | }
111 | set_sd_op_mode(false, false);
112 | ret = brom_read_sector_sd(ctx[0], sector_off, dst, sector_count);
113 | if (ret < 0)
114 | printf("[RPCP] read_sd: read failed: %X\n", ret);
115 | return ret;
116 | }
117 |
118 | int write_sd(uint32_t sector_off, void* dst, uint32_t sector_count) {
119 | uint32_t ctx[2];
120 | int ret = 0;
121 | printf("[RPCP] write_sd(%X, %X, %X)\n", sector_off, (uint32_t)dst, sector_count);
122 | ret = prepare_sd(ctx);
123 | if (ret < 0) {
124 | printf("[RPCP] write_sd: prepare sd failed: %X\n", ret);
125 | return ret;
126 | }
127 | set_sd_op_mode(true, false);
128 | ret = brom_read_sector_sd(ctx[0], sector_off, dst, sector_count);
129 | if (ret < 0)
130 | printf("[RPCP] write_sd: write failed: %X\n", ret);
131 | set_sd_op_mode(false, false);
132 | return ret;
133 | }
134 |
135 | int read_emmc(uint32_t sector_off, void* dst, uint32_t sector_count) {
136 | uint32_t ctx[2];
137 | int ret = 0;
138 | printf("[RPCP] read_emmc(%X, %X, %X)\n", sector_off, (uint32_t)dst, sector_count);
139 | ret = prepare_emmc(ctx);
140 | if (ret < 0) {
141 | printf("[RPCP] read_emmc: prepare emmc failed: %X\n", ret);
142 | return ret;
143 | }
144 | set_mmc_op_mode(false, false);
145 | ret = brom_read_sector_mmc(ctx[0], sector_off, dst, sector_count);
146 | if (ret < 0)
147 | printf("[RPCP] read_emmc: read failed: %X\n", ret);
148 | return ret;
149 | }
150 |
151 | int write_emmc(uint32_t sector_off, void* dst, uint32_t sector_count) {
152 | uint32_t ctx[2];
153 | int ret = 0;
154 | printf("[RPCP] write_emmc(%X, %X, %X)\n", sector_off, (uint32_t)dst, sector_count);
155 | ret = prepare_emmc(ctx);
156 | if (ret < 0) {
157 | printf("[RPCP] write_emmc: prepare emmc failed: %X\n", ret);
158 | return ret;
159 | }
160 | set_mmc_op_mode(true, false);
161 | ret = brom_read_sector_mmc(ctx[0], sector_off, dst, sector_count);
162 | if (ret < 0)
163 | printf("[RPCP] write_emmc: write failed: %X\n", ret);
164 | set_mmc_op_mode(false, false);
165 | return ret;
166 | }
167 |
168 | __attribute__((section(".text.rpcp")))
169 | int rpcp(uint32_t arg0, uint32_t arg1, void* extra_data) {
170 | printf("\n[RPCP] hello world (%X, %X, %X)\n", arg0, arg1, (uint32_t)extra_data);
171 |
172 | int ret = 0;
173 | int testno = 0;
174 | int test_count = TEST_COUNT;
175 | //if (arg1)
176 | //test_count = arg1;
177 | do_tests:
178 | testno++;
179 | printf("[RPCP] test number %X\n", testno);
180 |
181 | {
182 | int ret = 0;
183 |
184 | printf("[RPCP] prep emmc regs\n");
185 | prepare_emmc_regs();
186 |
187 | printf("[RPCP] set storage modes to read\n");
188 | set_mmc_op_mode(false, true);
189 | set_sd_op_mode(false, true);
190 |
191 | printf("[RPCP] start dump\n");
192 | uint32_t blksize = arg1;
193 | if (!blksize)
194 | blksize = COPY_BUFFER_BLKSIZE;
195 | uint32_t copied = arg0;
196 | while ((copied + COPY_BUFFER_BLKSIZE) <= (arg0 + blksize)) { // first copy with full buffer
197 | printf("[RPCP] memset %X %X\n", COPY_BUFFER_ADDR, COPY_BUFFER_BLKSIZE * 0x200);
198 | memset(COPY_BUFFER_ADDR, 0, COPY_BUFFER_BLKSIZE * 0x200);
199 |
200 | ret = read_emmc(copied, COPY_BUFFER_ADDR, COPY_BUFFER_BLKSIZE);
201 | if (ret < 0)
202 | return -1;
203 |
204 | if (copied == 0 && !arg1) {
205 | blksize = vp(COPY_BUFFER_ADDR + 0x24);
206 | printf("EMMC size detected: %X\n", blksize);
207 | }
208 |
209 | ret = write_sd(TARGET_OFFSET_BLOCK + copied, COPY_BUFFER_ADDR, COPY_BUFFER_BLKSIZE);
210 | if (ret < 0)
211 | return -2;
212 |
213 | copied = copied + COPY_BUFFER_BLKSIZE;
214 | }
215 |
216 | if (copied < (arg0 + blksize) && ((arg0 + blksize) - copied) <= COPY_BUFFER_BLKSIZE) {
217 | printf("[RPCP] memset %X %X\n", COPY_BUFFER_ADDR, COPY_BUFFER_BLKSIZE * 0x200);
218 | memset(COPY_BUFFER_ADDR, 0, COPY_BUFFER_BLKSIZE * 0x200);
219 |
220 | printf("[RPCP] read farts: %X[%X]\n", copied, ((arg0 + blksize) - copied));
221 |
222 | ret = read_emmc(copied, COPY_BUFFER_ADDR, ((arg0 + blksize) - copied));
223 | if (ret < 0)
224 | return -3;
225 |
226 | ret = write_sd(TARGET_OFFSET_BLOCK + copied, COPY_BUFFER_ADDR, ((arg0 + blksize) - copied));
227 | if (ret < 0)
228 | return -4;
229 |
230 | copied = (arg0 + blksize);
231 | }
232 |
233 | printf("[RPCP] dump done\n");
234 |
235 | printf("[RPCP] set storage modes to read\n");
236 | set_mmc_op_mode(false, true);
237 | set_sd_op_mode(false, true);
238 |
239 | ret = 0;
240 | }
241 |
242 | if (testno < test_count)
243 | goto do_tests;
244 |
245 | print("[RPCP] bye\n\n");
246 | return ret;
247 | }
--------------------------------------------------------------------------------
/payloads/emmc-dump/source/rpcp.h:
--------------------------------------------------------------------------------
1 | #ifndef __RPCP_H__
2 | #define __RPCP_H__
3 | #include "../../bob/include/types.h"
4 |
5 | #endif
--------------------------------------------------------------------------------
/payloads/keydumper/Makefile:
--------------------------------------------------------------------------------
1 | PREFIX=mep-elf-
2 | CC=$(PREFIX)gcc
3 | ADDEFS=
4 | CFLAGS=-fno-delete-null-pointer-checks -nostdlib -fno-optimize-sibling-calls -Os -std=gnu99 -fno-inline -fstrict-volatile-bitfields -fno-builtin -ml
5 | LD=$(PREFIX)gcc
6 | LDFLAGS=-Wl,-T linker.x -nodefaultlibs -nostdlib -nostartfiles
7 | OBJCOPY=$(PREFIX)objcopy
8 | OBJCOPYFLAGS=
9 |
10 | SRCS=$(wildcard source/*.c)
11 | OBJ=$(SRCS:.c=.o)
12 |
13 | all: output/rpcp.bin
14 |
15 | %.o: %.c
16 | $(CC) -S -o $@.asm $< $(CFLAGS) $(ADDEFS)
17 | $(CC) -c -o $@ $< $(CFLAGS) $(ADDEFS)
18 |
19 | rpcp.elf: $(OBJ)
20 | $(LD) -o $@ $^ $(LDFLAGS)
21 |
22 | %.bin: %.elf
23 | $(OBJCOPY) -O binary $< $@
24 |
25 | output/rpcp.bin: rpcp.bin
26 | -rm source/*.o
27 | -rm -rf output
28 | mkdir output
29 | mkdir output/asm
30 | mv source/*.asm output/asm/
31 | mv rpcp.elf output/rpcp.elf
32 | mv rpcp.bin output/rpcp.bin
33 |
34 | clean:
35 | -rm source/*.o
36 | -rm source/*.ao
37 | -rm source/*.asm
38 | -rm -rf output
--------------------------------------------------------------------------------
/payloads/keydumper/linker.x:
--------------------------------------------------------------------------------
1 | SECTIONS
2 | {
3 | INCLUDE ../bob/bob_linker.x
4 | . = 0x0004a000;
5 | .text : { *(.text.rpcp) *(.text .text.* .gnu.linkonce.t.*) }
6 | .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
7 | .data : { *(.data .data.* .gnu.linkonce.d.*) }
8 | .bss : { *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) }
9 | }
--------------------------------------------------------------------------------
/payloads/keydumper/source/rpcp.c:
--------------------------------------------------------------------------------
1 | #include "../../bob/include/types.h"
2 |
3 | #include "../../bob/include/defs.h"
4 | #include "../../bob/include/uart.h"
5 | #include "../../bob/include/debug.h"
6 | #include "../../bob/include/utils.h"
7 | #include "../../bob/include/clib.h"
8 | #include "../../bob/include/maika.h"
9 | #include "../../bob/include/crypto.h"
10 | #include "../../bob/include/spi.h"
11 | #include "../../bob/include/perv.h"
12 | #include "../../bob/include/gpio.h"
13 | #include "../../bob/include/i2c.h"
14 | #include "../../bob/include/paddr.h"
15 | #include "../../bob/include/ernie.h"
16 |
17 | #include "rpcp.h"
18 |
19 | static const unsigned char xbr_k8_bin[] = {
20 | // FILL from brom
21 | };
22 |
23 | static const unsigned char xbr_k9_bin[] = {
24 | // FILL from brom
25 | };
26 |
27 | static const unsigned char smi_enc_seed_1[32] =
28 | {
29 | // FILL from SL
30 | };
31 |
32 | static const unsigned char smi_enc_iv_1[16] =
33 | {
34 | // FILL from SL
35 | };
36 |
37 | static const unsigned char smi_enc_seed_2[32] =
38 | {
39 | // FILL from SL
40 | };
41 |
42 | static const unsigned char smi_enc_iv_2[16] =
43 | {
44 | // FILL from SL
45 | };
46 |
47 | static const unsigned char snvs_enc_key_material[3 * 0x20] = {
48 | // FILL from SL
49 | };
50 |
51 | // reused key material from legacy static keys??????
52 | static const unsigned char snvs_enc_key_material_iv[0x10] = {
53 | // FILL from SL
54 | };
55 |
56 | void xbr128(int target_ks, int enc_ks, void* seed, partial_s* dst) {
57 | crypto_bigmacDefaultCmd(0, (uint32_t)seed, target_ks, 0x10, CRYPTO_BIGMAC_FUNC_AES_ECB_ENC | CRYPTO_BIGMAC_FUNC_FLAG_TARGETS_KS | CRYPTO_BIGMAC_FUNC_FLAG_KEYSIZE_256, enc_ks, 0, 0);
58 | crypto_bigmacDefaultCmd(0, DEVNULL_OFFSET, (uint32_t)dst->full, 0x10, CRYPTO_BIGMAC_FUNC_AES_ECB_DEC | CRYPTO_BIGMAC_FUNC_FLAG_KEYSIZE_128, target_ks, 0, 0);
59 |
60 | crypto_bigmacDefaultCmd(0, (uint32_t)seed, target_ks, 0x10, CRYPTO_BIGMAC_FUNC_AES_ECB_ENC | CRYPTO_BIGMAC_FUNC_FLAG_TARGETS_KS | CRYPTO_BIGMAC_FUNC_FLAG_KEYSIZE_256, enc_ks, 0, 0);
61 | crypto_bigmacDefaultCmd(0, DEVNULL_OFFSET, (uint32_t)dst->four, 0xC, CRYPTO_BIGMAC_FUNC_AES_ECB_DEC | CRYPTO_BIGMAC_FUNC_FLAG_USE_EXT_KEY | CRYPTO_BIGMAC_FUNC_FLAG_KEYSIZE_128, 0, 0, 0);
62 |
63 | crypto_bigmacDefaultCmd(0, (uint32_t)seed, target_ks, 0x10, CRYPTO_BIGMAC_FUNC_AES_ECB_ENC | CRYPTO_BIGMAC_FUNC_FLAG_TARGETS_KS | CRYPTO_BIGMAC_FUNC_FLAG_KEYSIZE_256, enc_ks, 0, 0);
64 | crypto_bigmacDefaultCmd(0, DEVNULL_OFFSET, (uint32_t)dst->eight, 0x8, CRYPTO_BIGMAC_FUNC_AES_ECB_DEC | CRYPTO_BIGMAC_FUNC_FLAG_USE_EXT_KEY | CRYPTO_BIGMAC_FUNC_FLAG_KEYSIZE_128, 0, 0, 0);
65 |
66 | crypto_bigmacDefaultCmd(0, (uint32_t)seed, target_ks, 0x10, CRYPTO_BIGMAC_FUNC_AES_ECB_ENC | CRYPTO_BIGMAC_FUNC_FLAG_TARGETS_KS | CRYPTO_BIGMAC_FUNC_FLAG_KEYSIZE_256, enc_ks, 0, 0);
67 | crypto_bigmacDefaultCmd(0, DEVNULL_OFFSET, (uint32_t)dst->twelve, 0x4, CRYPTO_BIGMAC_FUNC_AES_ECB_DEC | CRYPTO_BIGMAC_FUNC_FLAG_USE_EXT_KEY | CRYPTO_BIGMAC_FUNC_FLAG_KEYSIZE_128, 0, 0, 0);
68 | }
69 |
70 | __attribute__((section(".text.rpcp")))
71 | int rpcp(uint32_t arg0, uint32_t arg1, void* extra_data) {
72 | printf("\n[RPCP] hello world (%X, %X, %X)\n", arg0, arg1, (uint32_t)extra_data);
73 |
74 | int ret = -1;
75 |
76 | {
77 | keybuf_s* keybuf = (keybuf_s*)0x1f850000;
78 | memset(keybuf, 0, sizeof(keybuf_s));
79 |
80 | // get SLSK key partials
81 | xbr128(8, 0x206, (void*)xbr_k8_bin, &keybuf->slsk_key_emmc_partials);
82 | xbr128(9, 0x207, (void*)xbr_k9_bin, &keybuf->slsk_key_sd_partials);
83 |
84 | // get SMI keys
85 | crypto_bigmacDefaultCmd(false, smi_enc_seed_1, keybuf->smi_enc_key[0], 0x20, CRYPTO_BIGMAC_FUNC_FLAG_KEYSIZE_256 | CRYPTO_BIGMAC_FUNC_AES_CBC_ENC, 0x213, smi_enc_iv_1, 0);
86 | crypto_bigmacDefaultCmd(false, smi_enc_seed_2, keybuf->smi_enc_key[1], 0x20, CRYPTO_BIGMAC_FUNC_FLAG_KEYSIZE_256 | CRYPTO_BIGMAC_FUNC_AES_CBC_ENC, 0x213, smi_enc_iv_2, 0);
87 |
88 | // get SNVS keys
89 | crypto_bigmacDefaultCmd(false, snvs_enc_key_material, keybuf->snvs_keys, 0x60, CRYPTO_BIGMAC_FUNC_FLAG_KEYSIZE_256 | CRYPTO_BIGMAC_FUNC_AES_CBC_ENC, 0x216, snvs_enc_key_material_iv, 0);
90 |
91 | // print out keys
92 | printf("SLSK key (EMMC) partials:\n");
93 | hexdump((uint32_t)&keybuf->slsk_key_emmc_partials, sizeof(partial_s), false);
94 | printf("SLSK key (SD) partials:\n");
95 | hexdump((uint32_t)&keybuf->slsk_key_sd_partials, sizeof(partial_s), false);
96 | printf("SMI encryption key (outer):\n");
97 | hexdump((uint32_t)keybuf->smi_enc_key[0], 0x20, false);
98 | printf("SMI encryption key (inner):\n");
99 | hexdump((uint32_t)keybuf->smi_enc_key[1], 0x20, false);
100 | printf("SNVS AES XTS tweak:\n");
101 | hexdump((uint32_t)keybuf->snvs_keys[0], 0x10, false);
102 | printf("SNVS AES XTS dec key:\n");
103 | hexdump((uint32_t)keybuf->snvs_keys[1], 0x10, false);
104 | printf("SNVS CMAC key:\n");
105 | hexdump((uint32_t)keybuf->snvs_keys[2], 0x10, false);
106 | }
107 |
108 | printf("[RPCP] byee %X\n\n", ret);
109 | return ret;
110 | }
--------------------------------------------------------------------------------
/payloads/keydumper/source/rpcp.h:
--------------------------------------------------------------------------------
1 | #ifndef __RPCP_H__
2 | #define __RPCP_H__
3 | #include "../../bob/include/types.h"
4 |
5 | struct _partial_s {
6 | uint8_t full[0x10];
7 | uint8_t four[0x10];
8 | uint8_t eight[0x10];
9 | uint8_t twelve[0x10];
10 | };
11 | typedef struct _partial_s partial_s;
12 |
13 | struct _keybuf_s {
14 | partial_s slsk_key_emmc_partials;
15 | partial_s slsk_key_sd_partials;
16 | uint8_t smi_enc_key[2][0x20];
17 | uint8_t snvs_keys[3][0x20];
18 | };
19 | typedef struct _keybuf_s keybuf_s;
20 |
21 | #endif
--------------------------------------------------------------------------------
/payloads/keyglitch/Makefile:
--------------------------------------------------------------------------------
1 | PREFIX=mep-elf-
2 | CC=$(PREFIX)gcc
3 | ADDEFS=
4 | CFLAGS=-fno-delete-null-pointer-checks -nostdlib -fno-optimize-sibling-calls -Os -std=gnu99 -fno-inline -fstrict-volatile-bitfields -fno-builtin -ml
5 | LD=$(PREFIX)gcc
6 | LDFLAGS=-Wl,-T linker.x -nodefaultlibs -nostdlib -nostartfiles
7 | OBJCOPY=$(PREFIX)objcopy
8 | OBJCOPYFLAGS=
9 |
10 | SRCS=$(wildcard source/*.c)
11 | OBJ=$(SRCS:.c=.o)
12 |
13 | all: output/rpcp.bin
14 |
15 | %.o: %.c
16 | $(CC) -S -o $@.asm $< $(CFLAGS) $(ADDEFS)
17 | $(CC) -c -o $@ $< $(CFLAGS) $(ADDEFS)
18 |
19 | rpcp.elf: $(OBJ)
20 | $(LD) -o $@ $^ $(LDFLAGS)
21 |
22 | %.bin: %.elf
23 | $(OBJCOPY) -O binary $< $@
24 |
25 | output/rpcp.bin: rpcp.bin
26 | -rm source/*.o
27 | -rm -rf output
28 | mkdir output
29 | mkdir output/asm
30 | mv source/*.asm output/asm/
31 | mv rpcp.elf output/rpcp.elf
32 | mv rpcp.bin output/rpcp.bin
33 |
34 | clean:
35 | -rm source/*.o
36 | -rm source/*.ao
37 | -rm source/*.asm
38 | -rm -rf output
--------------------------------------------------------------------------------
/payloads/keyglitch/linker.x:
--------------------------------------------------------------------------------
1 | SECTIONS
2 | {
3 | INCLUDE ../bob/bob_linker.x
4 | . = 0x0004a000;
5 | .text : { *(.text.rpcp) *(.text .text.* .gnu.linkonce.t.*) }
6 | .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
7 | .data : { *(.data .data.* .gnu.linkonce.d.*) }
8 | .bss : { *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) }
9 | }
--------------------------------------------------------------------------------
/payloads/keyglitch/source/rpcp.c:
--------------------------------------------------------------------------------
1 | #include "../../bob/include/types.h"
2 |
3 | #include "../../bob/include/defs.h"
4 | #include "../../bob/include/uart.h"
5 | #include "../../bob/include/debug.h"
6 | #include "../../bob/include/utils.h"
7 | #include "../../bob/include/clib.h"
8 | #include "../../bob/include/maika.h"
9 | #include "../../bob/include/crypto.h"
10 | #include "../../bob/include/spi.h"
11 | #include "../../bob/include/perv.h"
12 | #include "../../bob/include/gpio.h"
13 | #include "../../bob/include/i2c.h"
14 | #include "../../bob/include/paddr.h"
15 | #include "../../bob/include/ernie.h"
16 |
17 | #include "rpcp.h"
18 |
19 | int try_timed_xg(void) {
20 | maika_s* maika = (maika_s*)MAIKA_OFFSET;
21 |
22 | memset(0x4c000, 0, 0x400);
23 | crypto_bigmacDefaultCmd(true, 0x4c200, 0x4c300, 0x20, CRYPTO_BIGMAC_FUNC_FLAG_KEYSIZE_256 | CRYPTO_BIGMAC_FUNC_AES_CBC_ENC, 0x213, 0x4c220, 0);
24 |
25 | memset(0x4c220, 0, 0x20);
26 | maika->bigmac_ctrl.channel[true].dst = 0x4c320;
27 |
28 | gpio_port_set(0, GPIO_PORT_GAMECARD_LED);
29 |
30 | maika->bigmac_ctrl.channel[true].trigger = 1;
31 |
32 | gpio_port_clear(0, GPIO_PORT_GAMECARD_LED);
33 |
34 | while ((maika->bigmac_ctrl.channel[true].res) & 1) {};
35 | if (memcmp(0x4c300, 0x4c320, 0x20)) {
36 | printf("\nFAILED %X\n", maika->bigmac_ctrl.channel[true].status);
37 | hexdump(0x4c300, 0x20, false);
38 | hexdump(0x4c320, 0x20, false);
39 | while (1) {};
40 | } else
41 | print("\nOK\n");
42 | }
43 |
44 | __attribute__((section(".text.rpcp")))
45 | int rpcp(uint32_t arg0, uint32_t arg1, void* extra_data) {
46 | printf("\n[RPCP] hello world (%X, %X, %X)\n", arg0, arg1, (uint32_t)extra_data);
47 |
48 | int ret = -1;
49 |
50 | {
51 |
52 | vp 0xe3103040 = 0x10002;
53 |
54 | gpio_set_port_mode(0, GPIO_PORT_GAMECARD_LED, GPIO_PORT_MODE_OUTPUT);
55 |
56 | while (1) {
57 | delay(0x80);
58 | try_timed_xg();
59 | }
60 |
61 | }
62 |
63 | print("[RPCP] byee\n\n");
64 | return ret;
65 | }
--------------------------------------------------------------------------------
/payloads/keyglitch/source/rpcp.h:
--------------------------------------------------------------------------------
1 | #ifndef __RPCP_H__
2 | #define __RPCP_H__
3 | #include "../../bob/include/types.h"
4 |
5 |
6 | #endif
--------------------------------------------------------------------------------
/payloads/stage1/sd/Makefile:
--------------------------------------------------------------------------------
1 | all: stage1_4v2.bin
2 | stage1.o: stage1.s
3 | mep-elf-gcc -c -o $@ $< -ml -Wall
4 |
5 | stage1_4v2.elf: stage1.o
6 | mep-elf-gcc -o $@ $^ -Wl,-T cfg_4v2.x -nodefaultlibs -nostdlib -nostartfiles
7 |
8 | %.bin: %.elf
9 | mep-elf-objcopy -O binary $< $@
10 | truncate -s 1536 $@
11 |
12 | clean:
13 | -rm stage1.o
14 | -rm stage1*.elf
15 | -rm stage1*.bin
--------------------------------------------------------------------------------
/payloads/stage1/sd/cfg_4v2.x:
--------------------------------------------------------------------------------
1 | SECTIONS
2 | {
3 | . = 0x00040000;
4 | .text : { *(.text.stage1) }
5 | brom_read_sector_sd = 0x5e194;
6 | brom_sdif_sctx = 0x5eda0;
7 | brom_sdif_gctx = 0x5ea80;
8 | brom_init_storages = 0x5cf88;
9 | brom_init_sd = 0x5e252;
10 | }
11 |
--------------------------------------------------------------------------------
/payloads/stage1/sd/stage1.s:
--------------------------------------------------------------------------------
1 | # stage1 for psp2sdboot
2 | # allows for fast main payload iteration
3 |
4 | .section .text.stage1
5 |
6 | .global vectors_exceptions
7 | .type vectors_exceptions, @object
8 | vectors_exceptions:
9 | jmp RESET
10 | jmp RESET
11 | jmp RESET
12 | jmp RESET
13 | jmp RESET
14 | jmp RESET
15 | jmp RESET
16 | jmp RESET
17 | jmp RESET
18 | jmp RESET
19 | jmp RESET
20 | jmp RESET
21 | jmp RESET
22 | .size vectors_exceptions, .-vectors_exceptions
23 |
24 | .global sdread_args
25 | .type sdread_args, @object
26 | .size sdread_args, 12
27 | sdread_args:
28 | .word 0x0,0x0,0x0
29 |
30 | .global RESET
31 | .type RESET, @function
32 | RESET:
33 | di
34 | movh $sp, 0x5
35 | or3 $sp, $sp, 0xfff0
36 | # sadly we have to reinit the gcsd - more often than not the controller is fked bc of the glitch
37 | mov $1, 0x1
38 | mov $2, 0x0
39 | bsr brom_init_storages
40 | mov $1, 0x1
41 | mov $2, 0x0
42 | bsr brom_init_sd
43 | movu $7, extra_sdreads
44 | 1:
45 | lw $2, ($7)
46 | blti $2, 0, 2f
47 | lw $4, 0x8 ($7)
48 | lw $3, 0x4 ($7)
49 | movu $1, brom_sdif_gctx
50 | bsr brom_read_sector_sd
51 | add $7, 0xC
52 | bra 1b
53 | 2:
54 | movu $7, sdread_args
55 | lw $4, 0x8 ($7)
56 | lw $3, 0x4 ($7)
57 | lw $2, ($7)
58 | movu $1, brom_sdif_gctx
59 | stc $3, $lp
60 | jmp brom_read_sector_sd
61 | .size RESET, .-RESET
62 |
63 | .global extra_sdreads
64 | .type extra_sdreads, @object
65 | extra_sdreads:
66 | .word 0xffffffff, 0xffffffff, 0xffffffff
67 |
68 |
69 |
70 |
--------------------------------------------------------------------------------
/payloads/stage1/sd/stage1_4v2.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SKGleba/psp2sdboot/9a9173bc28723fe1de72f6bb5811087be0cd50f1/payloads/stage1/sd/stage1_4v2.bin
--------------------------------------------------------------------------------
/payloads/stage1/sd/stage1_4v2.elf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SKGleba/psp2sdboot/9a9173bc28723fe1de72f6bb5811087be0cd50f1/payloads/stage1/sd/stage1_4v2.elf
--------------------------------------------------------------------------------
/pcb/generic/fab/try2-B_Cu.gbr:
--------------------------------------------------------------------------------
1 | %TF.GenerationSoftware,KiCad,Pcbnew,7.0.9*%
2 | %TF.CreationDate,2023-11-12T02:22:26+01:00*%
3 | %TF.ProjectId,try2,74727932-2e6b-4696-9361-645f70636258,rev?*%
4 | %TF.SameCoordinates,Original*%
5 | %TF.FileFunction,Copper,L2,Bot*%
6 | %TF.FilePolarity,Positive*%
7 | %FSLAX46Y46*%
8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
9 | G04 Created by KiCad (PCBNEW 7.0.9) date 2023-11-12 02:22:26*
10 | %MOMM*%
11 | %LPD*%
12 | G01*
13 | G04 APERTURE LIST*
14 | %TA.AperFunction,ComponentPad*%
15 | %ADD10C,1.700000*%
16 | %TD*%
17 | %TA.AperFunction,ComponentPad*%
18 | %ADD11R,1.700000X1.700000*%
19 | %TD*%
20 | G04 APERTURE END LIST*
21 | D10*
22 | %TO.P,J3,4,Pin_4*%
23 | %TO.N,Net-(J1-Pin_1)*%
24 | X150495000Y-86868000D03*
25 | %TO.P,J3,3,Pin_3*%
26 | %TO.N,Net-(J2-Pin_1)*%
27 | X147955000Y-86868000D03*
28 | %TO.P,J3,2,Pin_2*%
29 | %TO.N,Net-(J3-Pin_2)*%
30 | X145415000Y-86868000D03*
31 | D11*
32 | %TO.P,J3,1,Pin_1*%
33 | %TO.N,Net-(J3-Pin_1)*%
34 | X142875000Y-86868000D03*
35 | %TD*%
36 | D10*
37 | %TO.P,J4,4,Pin_4*%
38 | %TO.N,Net-(J4-Pin_4)*%
39 | X150495000Y-97028000D03*
40 | %TO.P,J4,3,Pin_3*%
41 | %TO.N,Net-(J4-Pin_3)*%
42 | X147955000Y-97028000D03*
43 | %TO.P,J4,2,Pin_2*%
44 | %TO.N,Net-(J4-Pin_2)*%
45 | X145415000Y-97028000D03*
46 | D11*
47 | %TO.P,J4,1,Pin_1*%
48 | %TO.N,Net-(J4-Pin_1)*%
49 | X142875000Y-97028000D03*
50 | %TD*%
51 | M02*
52 |
--------------------------------------------------------------------------------
/pcb/generic/fab/try2-B_Mask.gbr:
--------------------------------------------------------------------------------
1 | %TF.GenerationSoftware,KiCad,Pcbnew,7.0.9*%
2 | %TF.CreationDate,2023-11-12T02:22:26+01:00*%
3 | %TF.ProjectId,try2,74727932-2e6b-4696-9361-645f70636258,rev?*%
4 | %TF.SameCoordinates,Original*%
5 | %TF.FileFunction,Soldermask,Bot*%
6 | %TF.FilePolarity,Negative*%
7 | %FSLAX46Y46*%
8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
9 | G04 Created by KiCad (PCBNEW 7.0.9) date 2023-11-12 02:22:26*
10 | %MOMM*%
11 | %LPD*%
12 | G01*
13 | G04 APERTURE LIST*
14 | %ADD10C,1.700000*%
15 | %ADD11R,1.700000X1.700000*%
16 | G04 APERTURE END LIST*
17 | D10*
18 | %TO.C,J3*%
19 | X150495000Y-86868000D03*
20 | X147955000Y-86868000D03*
21 | X145415000Y-86868000D03*
22 | D11*
23 | X142875000Y-86868000D03*
24 | %TD*%
25 | D10*
26 | %TO.C,J4*%
27 | X150495000Y-97028000D03*
28 | X147955000Y-97028000D03*
29 | X145415000Y-97028000D03*
30 | D11*
31 | X142875000Y-97028000D03*
32 | %TD*%
33 | M02*
34 |
--------------------------------------------------------------------------------
/pcb/generic/fab/try2-B_Paste.gbr:
--------------------------------------------------------------------------------
1 | %TF.GenerationSoftware,KiCad,Pcbnew,7.0.9*%
2 | %TF.CreationDate,2023-11-12T02:22:26+01:00*%
3 | %TF.ProjectId,try2,74727932-2e6b-4696-9361-645f70636258,rev?*%
4 | %TF.SameCoordinates,Original*%
5 | %TF.FileFunction,Paste,Bot*%
6 | %TF.FilePolarity,Positive*%
7 | %FSLAX46Y46*%
8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
9 | G04 Created by KiCad (PCBNEW 7.0.9) date 2023-11-12 02:22:26*
10 | %MOMM*%
11 | %LPD*%
12 | G01*
13 | G04 APERTURE LIST*
14 | %ADD10C,1.700000*%
15 | G04 APERTURE END LIST*
16 | D10*
17 | %TO.C,J3*%
18 | X150495000Y-86868000D03*
19 | X147955000Y-86868000D03*
20 | X145415000Y-86868000D03*
21 | %TD*%
22 | %TO.C,J4*%
23 | X150495000Y-97028000D03*
24 | X147955000Y-97028000D03*
25 | X145415000Y-97028000D03*
26 | %TD*%
27 | M02*
28 |
--------------------------------------------------------------------------------
/pcb/generic/fab/try2-B_Silkscreen.gbr:
--------------------------------------------------------------------------------
1 | %TF.GenerationSoftware,KiCad,Pcbnew,7.0.9*%
2 | %TF.CreationDate,2023-11-12T02:22:26+01:00*%
3 | %TF.ProjectId,try2,74727932-2e6b-4696-9361-645f70636258,rev?*%
4 | %TF.SameCoordinates,Original*%
5 | %TF.FileFunction,Legend,Bot*%
6 | %TF.FilePolarity,Positive*%
7 | %FSLAX46Y46*%
8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
9 | G04 Created by KiCad (PCBNEW 7.0.9) date 2023-11-12 02:22:26*
10 | %MOMM*%
11 | %LPD*%
12 | G01*
13 | G04 APERTURE LIST*
14 | G04 APERTURE END LIST*
15 | M02*
16 |
--------------------------------------------------------------------------------
/pcb/generic/fab/try2-Edge_Cuts.gbr:
--------------------------------------------------------------------------------
1 | %TF.GenerationSoftware,KiCad,Pcbnew,7.0.9*%
2 | %TF.CreationDate,2023-11-12T02:22:26+01:00*%
3 | %TF.ProjectId,try2,74727932-2e6b-4696-9361-645f70636258,rev?*%
4 | %TF.SameCoordinates,Original*%
5 | %TF.FileFunction,Profile,NP*%
6 | %FSLAX46Y46*%
7 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
8 | G04 Created by KiCad (PCBNEW 7.0.9) date 2023-11-12 02:22:26*
9 | %MOMM*%
10 | %LPD*%
11 | G01*
12 | G04 APERTURE LIST*
13 | %TA.AperFunction,Profile*%
14 | %ADD10C,0.100000*%
15 | %TD*%
16 | G04 APERTURE END LIST*
17 | D10*
18 | X139700000Y-84937600D02*
19 | X153670000Y-84937600D01*
20 | X153670000Y-98907600D01*
21 | X139700000Y-98907600D01*
22 | X139700000Y-84937600D01*
23 | M02*
24 |
--------------------------------------------------------------------------------
/pcb/generic/fab/try2-F_Cu.gbr:
--------------------------------------------------------------------------------
1 | %TF.GenerationSoftware,KiCad,Pcbnew,7.0.9*%
2 | %TF.CreationDate,2023-11-12T02:22:26+01:00*%
3 | %TF.ProjectId,try2,74727932-2e6b-4696-9361-645f70636258,rev?*%
4 | %TF.SameCoordinates,Original*%
5 | %TF.FileFunction,Copper,L1,Top*%
6 | %TF.FilePolarity,Positive*%
7 | %FSLAX46Y46*%
8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
9 | G04 Created by KiCad (PCBNEW 7.0.9) date 2023-11-12 02:22:26*
10 | %MOMM*%
11 | %LPD*%
12 | G01*
13 | G04 APERTURE LIST*
14 | G04 Aperture macros list*
15 | %AMRoundRect*
16 | 0 Rectangle with rounded corners*
17 | 0 $1 Rounding radius*
18 | 0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners*
19 | 0 Add a 4 corners polygon primitive as box body*
20 | 4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0*
21 | 0 Add four circle primitives for the rounded corners*
22 | 1,1,$1+$1,$2,$3*
23 | 1,1,$1+$1,$4,$5*
24 | 1,1,$1+$1,$6,$7*
25 | 1,1,$1+$1,$8,$9*
26 | 0 Add four rect primitives between the rounded corners*
27 | 20,1,$1+$1,$2,$3,$4,$5,0*
28 | 20,1,$1+$1,$4,$5,$6,$7,0*
29 | 20,1,$1+$1,$6,$7,$8,$9,0*
30 | 20,1,$1+$1,$8,$9,$2,$3,0*%
31 | G04 Aperture macros list end*
32 | %TA.AperFunction,ComponentPad*%
33 | %ADD10C,1.700000*%
34 | %TD*%
35 | %TA.AperFunction,ComponentPad*%
36 | %ADD11R,1.700000X1.700000*%
37 | %TD*%
38 | %TA.AperFunction,SMDPad,CuDef*%
39 | %ADD12RoundRect,0.150000X0.587500X0.150000X-0.587500X0.150000X-0.587500X-0.150000X0.587500X-0.150000X0*%
40 | %TD*%
41 | %TA.AperFunction,SMDPad,CuDef*%
42 | %ADD13RoundRect,0.150000X-0.587500X-0.150000X0.587500X-0.150000X0.587500X0.150000X-0.587500X0.150000X0*%
43 | %TD*%
44 | %TA.AperFunction,SMDPad,CuDef*%
45 | %ADD14RoundRect,0.250000X-0.750000X0.250000X-0.750000X-0.250000X0.750000X-0.250000X0.750000X0.250000X0*%
46 | %TD*%
47 | %TA.AperFunction,Conductor*%
48 | %ADD15C,0.400000*%
49 | %TD*%
50 | G04 APERTURE END LIST*
51 | D10*
52 | %TO.P,J3,4,Pin_4*%
53 | %TO.N,Net-(J1-Pin_1)*%
54 | X150495000Y-86868000D03*
55 | %TO.P,J3,3,Pin_3*%
56 | %TO.N,Net-(J2-Pin_1)*%
57 | X147955000Y-86868000D03*
58 | %TO.P,J3,2,Pin_2*%
59 | %TO.N,Net-(J3-Pin_2)*%
60 | X145415000Y-86868000D03*
61 | D11*
62 | %TO.P,J3,1,Pin_1*%
63 | %TO.N,Net-(J3-Pin_1)*%
64 | X142875000Y-86868000D03*
65 | %TD*%
66 | D12*
67 | %TO.P,Q2,1,G*%
68 | %TO.N,Net-(J4-Pin_3)*%
69 | X145385000Y-92898000D03*
70 | %TO.P,Q2,2,S*%
71 | %TO.N,Net-(J4-Pin_4)*%
72 | X145385000Y-90998000D03*
73 | %TO.P,Q2,3,D*%
74 | %TO.N,Net-(J4-Pin_2)*%
75 | X143510000Y-91948000D03*
76 | %TD*%
77 | D13*
78 | %TO.P,Q1,3,D*%
79 | %TO.N,Net-(J2-Pin_1)*%
80 | X149860000Y-91948000D03*
81 | %TO.P,Q1,2,S*%
82 | %TO.N,Net-(J4-Pin_4)*%
83 | X147985000Y-92898000D03*
84 | %TO.P,Q1,1,G*%
85 | %TO.N,Net-(J3-Pin_2)*%
86 | X147985000Y-90998000D03*
87 | %TD*%
88 | D14*
89 | %TO.P,J8,1,Pin_1*%
90 | %TO.N,Net-(J3-Pin_1)*%
91 | X140970000Y-89408000D03*
92 | %TD*%
93 | %TO.P,J7,1,Pin_1*%
94 | %TO.N,Net-(J4-Pin_4)*%
95 | X152400000Y-94488000D03*
96 | %TD*%
97 | %TO.P,J6,1,Pin_1*%
98 | %TO.N,Net-(J4-Pin_1)*%
99 | X140970000Y-94488000D03*
100 | %TD*%
101 | %TO.P,J5,1,Pin_1*%
102 | %TO.N,Net-(J4-Pin_2)*%
103 | X140970000Y-91948000D03*
104 | %TD*%
105 | D10*
106 | %TO.P,J4,4,Pin_4*%
107 | %TO.N,Net-(J4-Pin_4)*%
108 | X150495000Y-97028000D03*
109 | %TO.P,J4,3,Pin_3*%
110 | %TO.N,Net-(J4-Pin_3)*%
111 | X147955000Y-97028000D03*
112 | %TO.P,J4,2,Pin_2*%
113 | %TO.N,Net-(J4-Pin_2)*%
114 | X145415000Y-97028000D03*
115 | D11*
116 | %TO.P,J4,1,Pin_1*%
117 | %TO.N,Net-(J4-Pin_1)*%
118 | X142875000Y-97028000D03*
119 | %TD*%
120 | D14*
121 | %TO.P,J2,1,Pin_1*%
122 | %TO.N,Net-(J2-Pin_1)*%
123 | X152400000Y-91948000D03*
124 | %TD*%
125 | %TO.P,J1,1,Pin_1*%
126 | %TO.N,Net-(J1-Pin_1)*%
127 | X152400000Y-89408000D03*
128 | %TD*%
129 | D15*
130 | %TO.N,Net-(J3-Pin_1)*%
131 | X142875000Y-87503000D02*
132 | X142875000Y-86868000D01*
133 | X140970000Y-89408000D02*
134 | X142875000Y-87503000D01*
135 | %TO.N,Net-(J4-Pin_4)*%
136 | X149575000Y-96108000D02*
137 | X149575000Y-94488000D01*
138 | X150495000Y-97028000D02*
139 | X149575000Y-96108000D01*
140 | X149575000Y-94488000D02*
141 | X147985000Y-92898000D01*
142 | X152400000Y-94488000D02*
143 | X149575000Y-94488000D01*
144 | %TO.N,Net-(J2-Pin_1)*%
145 | X152400000Y-91948000D02*
146 | X149860000Y-91948000D01*
147 | %TO.N,Net-(J1-Pin_1)*%
148 | X152400000Y-88773000D02*
149 | X152400000Y-89408000D01*
150 | X150495000Y-86868000D02*
151 | X152400000Y-88773000D01*
152 | %TO.N,Net-(J2-Pin_1)*%
153 | X149860000Y-88773000D02*
154 | X149860000Y-91948000D01*
155 | X147955000Y-86868000D02*
156 | X149860000Y-88773000D01*
157 | %TO.N,Net-(J3-Pin_2)*%
158 | X147985000Y-89438000D02*
159 | X147985000Y-90998000D01*
160 | X145415000Y-86868000D02*
161 | X147985000Y-89438000D01*
162 | %TO.N,Net-(J4-Pin_2)*%
163 | X140970000Y-91948000D02*
164 | X143510000Y-91948000D01*
165 | %TO.N,Net-(J4-Pin_1)*%
166 | X142875000Y-96393000D02*
167 | X142875000Y-97028000D01*
168 | X140970000Y-94488000D02*
169 | X142875000Y-96393000D01*
170 | %TO.N,Net-(J4-Pin_2)*%
171 | X143510000Y-91948000D02*
172 | X143510000Y-95123000D01*
173 | X143510000Y-95123000D02*
174 | X145415000Y-97028000D01*
175 | %TO.N,Net-(J4-Pin_3)*%
176 | X147955000Y-95468000D02*
177 | X147955000Y-97028000D01*
178 | X145385000Y-92898000D02*
179 | X147955000Y-95468000D01*
180 | %TO.N,Net-(J4-Pin_4)*%
181 | X147285000Y-92898000D02*
182 | X147985000Y-92898000D01*
183 | X145385000Y-90998000D02*
184 | X147285000Y-92898000D01*
185 | %TD*%
186 | M02*
187 |
--------------------------------------------------------------------------------
/pcb/generic/fab/try2-F_Mask.gbr:
--------------------------------------------------------------------------------
1 | %TF.GenerationSoftware,KiCad,Pcbnew,7.0.9*%
2 | %TF.CreationDate,2023-11-12T02:22:26+01:00*%
3 | %TF.ProjectId,try2,74727932-2e6b-4696-9361-645f70636258,rev?*%
4 | %TF.SameCoordinates,Original*%
5 | %TF.FileFunction,Soldermask,Top*%
6 | %TF.FilePolarity,Negative*%
7 | %FSLAX46Y46*%
8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
9 | G04 Created by KiCad (PCBNEW 7.0.9) date 2023-11-12 02:22:26*
10 | %MOMM*%
11 | %LPD*%
12 | G01*
13 | G04 APERTURE LIST*
14 | G04 Aperture macros list*
15 | %AMRoundRect*
16 | 0 Rectangle with rounded corners*
17 | 0 $1 Rounding radius*
18 | 0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners*
19 | 0 Add a 4 corners polygon primitive as box body*
20 | 4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0*
21 | 0 Add four circle primitives for the rounded corners*
22 | 1,1,$1+$1,$2,$3*
23 | 1,1,$1+$1,$4,$5*
24 | 1,1,$1+$1,$6,$7*
25 | 1,1,$1+$1,$8,$9*
26 | 0 Add four rect primitives between the rounded corners*
27 | 20,1,$1+$1,$2,$3,$4,$5,0*
28 | 20,1,$1+$1,$4,$5,$6,$7,0*
29 | 20,1,$1+$1,$6,$7,$8,$9,0*
30 | 20,1,$1+$1,$8,$9,$2,$3,0*%
31 | G04 Aperture macros list end*
32 | %ADD10C,1.700000*%
33 | %ADD11R,1.700000X1.700000*%
34 | %ADD12RoundRect,0.150000X0.587500X0.150000X-0.587500X0.150000X-0.587500X-0.150000X0.587500X-0.150000X0*%
35 | %ADD13RoundRect,0.150000X-0.587500X-0.150000X0.587500X-0.150000X0.587500X0.150000X-0.587500X0.150000X0*%
36 | %ADD14RoundRect,0.250000X-0.750000X0.250000X-0.750000X-0.250000X0.750000X-0.250000X0.750000X0.250000X0*%
37 | G04 APERTURE END LIST*
38 | D10*
39 | %TO.C,J3*%
40 | X150495000Y-86868000D03*
41 | X147955000Y-86868000D03*
42 | X145415000Y-86868000D03*
43 | D11*
44 | X142875000Y-86868000D03*
45 | %TD*%
46 | D12*
47 | %TO.C,Q2*%
48 | X145385000Y-92898000D03*
49 | X145385000Y-90998000D03*
50 | X143510000Y-91948000D03*
51 | %TD*%
52 | D13*
53 | %TO.C,Q1*%
54 | X149860000Y-91948000D03*
55 | X147985000Y-92898000D03*
56 | X147985000Y-90998000D03*
57 | %TD*%
58 | D14*
59 | %TO.C,J8*%
60 | X140970000Y-89408000D03*
61 | %TD*%
62 | %TO.C,J7*%
63 | X152400000Y-94488000D03*
64 | %TD*%
65 | %TO.C,J6*%
66 | X140970000Y-94488000D03*
67 | %TD*%
68 | %TO.C,J5*%
69 | X140970000Y-91948000D03*
70 | %TD*%
71 | D10*
72 | %TO.C,J4*%
73 | X150495000Y-97028000D03*
74 | X147955000Y-97028000D03*
75 | X145415000Y-97028000D03*
76 | D11*
77 | X142875000Y-97028000D03*
78 | %TD*%
79 | D14*
80 | %TO.C,J2*%
81 | X152400000Y-91948000D03*
82 | %TD*%
83 | %TO.C,J1*%
84 | X152400000Y-89408000D03*
85 | %TD*%
86 | M02*
87 |
--------------------------------------------------------------------------------
/pcb/generic/fab/try2-F_Paste.gbr:
--------------------------------------------------------------------------------
1 | %TF.GenerationSoftware,KiCad,Pcbnew,7.0.9*%
2 | %TF.CreationDate,2023-11-12T02:22:26+01:00*%
3 | %TF.ProjectId,try2,74727932-2e6b-4696-9361-645f70636258,rev?*%
4 | %TF.SameCoordinates,Original*%
5 | %TF.FileFunction,Paste,Top*%
6 | %TF.FilePolarity,Positive*%
7 | %FSLAX46Y46*%
8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
9 | G04 Created by KiCad (PCBNEW 7.0.9) date 2023-11-12 02:22:26*
10 | %MOMM*%
11 | %LPD*%
12 | G01*
13 | G04 APERTURE LIST*
14 | G04 Aperture macros list*
15 | %AMRoundRect*
16 | 0 Rectangle with rounded corners*
17 | 0 $1 Rounding radius*
18 | 0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners*
19 | 0 Add a 4 corners polygon primitive as box body*
20 | 4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0*
21 | 0 Add four circle primitives for the rounded corners*
22 | 1,1,$1+$1,$2,$3*
23 | 1,1,$1+$1,$4,$5*
24 | 1,1,$1+$1,$6,$7*
25 | 1,1,$1+$1,$8,$9*
26 | 0 Add four rect primitives between the rounded corners*
27 | 20,1,$1+$1,$2,$3,$4,$5,0*
28 | 20,1,$1+$1,$4,$5,$6,$7,0*
29 | 20,1,$1+$1,$6,$7,$8,$9,0*
30 | 20,1,$1+$1,$8,$9,$2,$3,0*%
31 | G04 Aperture macros list end*
32 | %ADD10C,1.700000*%
33 | %ADD11RoundRect,0.150000X0.587500X0.150000X-0.587500X0.150000X-0.587500X-0.150000X0.587500X-0.150000X0*%
34 | %ADD12RoundRect,0.150000X-0.587500X-0.150000X0.587500X-0.150000X0.587500X0.150000X-0.587500X0.150000X0*%
35 | %ADD13RoundRect,0.250000X-0.750000X0.250000X-0.750000X-0.250000X0.750000X-0.250000X0.750000X0.250000X0*%
36 | G04 APERTURE END LIST*
37 | D10*
38 | %TO.C,J3*%
39 | X150495000Y-86868000D03*
40 | X147955000Y-86868000D03*
41 | X145415000Y-86868000D03*
42 | %TD*%
43 | D11*
44 | %TO.C,Q2*%
45 | X145385000Y-92898000D03*
46 | X145385000Y-90998000D03*
47 | X143510000Y-91948000D03*
48 | %TD*%
49 | D12*
50 | %TO.C,Q1*%
51 | X149860000Y-91948000D03*
52 | X147985000Y-92898000D03*
53 | X147985000Y-90998000D03*
54 | %TD*%
55 | D13*
56 | %TO.C,J8*%
57 | X140970000Y-89408000D03*
58 | %TD*%
59 | %TO.C,J7*%
60 | X152400000Y-94488000D03*
61 | %TD*%
62 | %TO.C,J6*%
63 | X140970000Y-94488000D03*
64 | %TD*%
65 | %TO.C,J5*%
66 | X140970000Y-91948000D03*
67 | %TD*%
68 | D10*
69 | %TO.C,J4*%
70 | X150495000Y-97028000D03*
71 | X147955000Y-97028000D03*
72 | X145415000Y-97028000D03*
73 | %TD*%
74 | D13*
75 | %TO.C,J2*%
76 | X152400000Y-91948000D03*
77 | %TD*%
78 | %TO.C,J1*%
79 | X152400000Y-89408000D03*
80 | %TD*%
81 | M02*
82 |
--------------------------------------------------------------------------------
/pcb/generic/fab/try2-F_Silkscreen.gbr:
--------------------------------------------------------------------------------
1 | %TF.GenerationSoftware,KiCad,Pcbnew,7.0.9*%
2 | %TF.CreationDate,2023-11-12T02:22:26+01:00*%
3 | %TF.ProjectId,try2,74727932-2e6b-4696-9361-645f70636258,rev?*%
4 | %TF.SameCoordinates,Original*%
5 | %TF.FileFunction,Legend,Top*%
6 | %TF.FilePolarity,Positive*%
7 | %FSLAX46Y46*%
8 | G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
9 | G04 Created by KiCad (PCBNEW 7.0.9) date 2023-11-12 02:22:26*
10 | %MOMM*%
11 | %LPD*%
12 | G01*
13 | G04 APERTURE LIST*
14 | %ADD10C,0.150000*%
15 | %ADD11C,0.120000*%
16 | G04 APERTURE END LIST*
17 | D10*
18 | X144354779Y-89785819D02*
19 | X144354779Y-88785819D01*
20 | X144354779Y-88785819D02*
21 | X144735731Y-88785819D01*
22 | X144735731Y-88785819D02*
23 | X144830969Y-88833438D01*
24 | X144830969Y-88833438D02*
25 | X144878588Y-88881057D01*
26 | X144878588Y-88881057D02*
27 | X144926207Y-88976295D01*
28 | X144926207Y-88976295D02*
29 | X144926207Y-89119152D01*
30 | X144926207Y-89119152D02*
31 | X144878588Y-89214390D01*
32 | X144878588Y-89214390D02*
33 | X144830969Y-89262009D01*
34 | X144830969Y-89262009D02*
35 | X144735731Y-89309628D01*
36 | X144735731Y-89309628D02*
37 | X144354779Y-89309628D01*
38 | X145354779Y-89785819D02*
39 | X145354779Y-88785819D01*
40 | X145354779Y-88785819D02*
41 | X145688112Y-89500104D01*
42 | X145688112Y-89500104D02*
43 | X146021445Y-88785819D01*
44 | X146021445Y-88785819D02*
45 | X146021445Y-89785819D01*
46 | X146497636Y-89785819D02*
47 | X146497636Y-88785819D01*
48 | X147545254Y-89690580D02*
49 | X147497635Y-89738200D01*
50 | X147497635Y-89738200D02*
51 | X147354778Y-89785819D01*
52 | X147354778Y-89785819D02*
53 | X147259540Y-89785819D01*
54 | X147259540Y-89785819D02*
55 | X147116683Y-89738200D01*
56 | X147116683Y-89738200D02*
57 | X147021445Y-89642961D01*
58 | X147021445Y-89642961D02*
59 | X146973826Y-89547723D01*
60 | X146973826Y-89547723D02*
61 | X146926207Y-89357247D01*
62 | X146926207Y-89357247D02*
63 | X146926207Y-89214390D01*
64 | X146926207Y-89214390D02*
65 | X146973826Y-89023914D01*
66 | X146973826Y-89023914D02*
67 | X147021445Y-88928676D01*
68 | X147021445Y-88928676D02*
69 | X147116683Y-88833438D01*
70 | X147116683Y-88833438D02*
71 | X147259540Y-88785819D01*
72 | X147259540Y-88785819D02*
73 | X147354778Y-88785819D01*
74 | X147354778Y-88785819D02*
75 | X147497635Y-88833438D01*
76 | X147497635Y-88833438D02*
77 | X147545254Y-88881057D01*
78 | X147973826Y-89404866D02*
79 | X148735731Y-89404866D01*
80 | X149688111Y-89785819D02*
81 | X149211921Y-89785819D01*
82 | X149211921Y-89785819D02*
83 | X149211921Y-88785819D01*
84 | X144100779Y-94992819D02*
85 | X144100779Y-93992819D01*
86 | X144100779Y-93992819D02*
87 | X144481731Y-93992819D01*
88 | X144481731Y-93992819D02*
89 | X144576969Y-94040438D01*
90 | X144576969Y-94040438D02*
91 | X144624588Y-94088057D01*
92 | X144624588Y-94088057D02*
93 | X144672207Y-94183295D01*
94 | X144672207Y-94183295D02*
95 | X144672207Y-94326152D01*
96 | X144672207Y-94326152D02*
97 | X144624588Y-94421390D01*
98 | X144624588Y-94421390D02*
99 | X144576969Y-94469009D01*
100 | X144576969Y-94469009D02*
101 | X144481731Y-94516628D01*
102 | X144481731Y-94516628D02*
103 | X144100779Y-94516628D01*
104 | X145053160Y-94945200D02*
105 | X145196017Y-94992819D01*
106 | X145196017Y-94992819D02*
107 | X145434112Y-94992819D01*
108 | X145434112Y-94992819D02*
109 | X145529350Y-94945200D01*
110 | X145529350Y-94945200D02*
111 | X145576969Y-94897580D01*
112 | X145576969Y-94897580D02*
113 | X145624588Y-94802342D01*
114 | X145624588Y-94802342D02*
115 | X145624588Y-94707104D01*
116 | X145624588Y-94707104D02*
117 | X145576969Y-94611866D01*
118 | X145576969Y-94611866D02*
119 | X145529350Y-94564247D01*
120 | X145529350Y-94564247D02*
121 | X145434112Y-94516628D01*
122 | X145434112Y-94516628D02*
123 | X145243636Y-94469009D01*
124 | X145243636Y-94469009D02*
125 | X145148398Y-94421390D01*
126 | X145148398Y-94421390D02*
127 | X145100779Y-94373771D01*
128 | X145100779Y-94373771D02*
129 | X145053160Y-94278533D01*
130 | X145053160Y-94278533D02*
131 | X145053160Y-94183295D01*
132 | X145053160Y-94183295D02*
133 | X145100779Y-94088057D01*
134 | X145100779Y-94088057D02*
135 | X145148398Y-94040438D01*
136 | X145148398Y-94040438D02*
137 | X145243636Y-93992819D01*
138 | X145243636Y-93992819D02*
139 | X145481731Y-93992819D01*
140 | X145481731Y-93992819D02*
141 | X145624588Y-94040438D01*
142 | X146053160Y-94992819D02*
143 | X146053160Y-93992819D01*
144 | X146053160Y-93992819D02*
145 | X146434112Y-93992819D01*
146 | X146434112Y-93992819D02*
147 | X146529350Y-94040438D01*
148 | X146529350Y-94040438D02*
149 | X146576969Y-94088057D01*
150 | X146576969Y-94088057D02*
151 | X146624588Y-94183295D01*
152 | X146624588Y-94183295D02*
153 | X146624588Y-94326152D01*
154 | X146624588Y-94326152D02*
155 | X146576969Y-94421390D01*
156 | X146576969Y-94421390D02*
157 | X146529350Y-94469009D01*
158 | X146529350Y-94469009D02*
159 | X146434112Y-94516628D01*
160 | X146434112Y-94516628D02*
161 | X146053160Y-94516628D01*
162 | X147005541Y-94088057D02*
163 | X147053160Y-94040438D01*
164 | X147053160Y-94040438D02*
165 | X147148398Y-93992819D01*
166 | X147148398Y-93992819D02*
167 | X147386493Y-93992819D01*
168 | X147386493Y-93992819D02*
169 | X147481731Y-94040438D01*
170 | X147481731Y-94040438D02*
171 | X147529350Y-94088057D01*
172 | X147529350Y-94088057D02*
173 | X147576969Y-94183295D01*
174 | X147576969Y-94183295D02*
175 | X147576969Y-94278533D01*
176 | X147576969Y-94278533D02*
177 | X147529350Y-94421390D01*
178 | X147529350Y-94421390D02*
179 | X146957922Y-94992819D01*
180 | X146957922Y-94992819D02*
181 | X147576969Y-94992819D01*
182 | X147862684Y-93992819D02*
183 | X148196017Y-94992819D01*
184 | X148196017Y-94992819D02*
185 | X148529350Y-93992819D01*
186 | X149196017Y-94469009D02*
187 | X148862684Y-94469009D01*
188 | X148862684Y-94992819D02*
189 | X148862684Y-93992819D01*
190 | X148862684Y-93992819D02*
191 | X149338874Y-93992819D01*
192 | X149719827Y-94992819D02*
193 | X149719827Y-93992819D01*
194 | D11*
195 | %TO.C,J3*%
196 | X144145000Y-88198000D02*
197 | X151825000Y-88198000D01*
198 | X141545000Y-88198000D02*
199 | X141545000Y-86868000D01*
200 | X144145000Y-88198000D02*
201 | X144145000Y-85538000D01*
202 | X151825000Y-88198000D02*
203 | X151825000Y-85538000D01*
204 | X142875000Y-88198000D02*
205 | X141545000Y-88198000D01*
206 | X144145000Y-85538000D02*
207 | X151825000Y-85538000D01*
208 | %TO.C,Q2*%
209 | X144447500Y-93508000D02*
210 | X143797500Y-93508000D01*
211 | X144447500Y-90388000D02*
212 | X143797500Y-90388000D01*
213 | X144447500Y-93508000D02*
214 | X146122500Y-93508000D01*
215 | X144447500Y-90388000D02*
216 | X145097500Y-90388000D01*
217 | %TO.C,Q1*%
218 | X148922500Y-93508000D02*
219 | X148272500Y-93508000D01*
220 | X148922500Y-90388000D02*
221 | X147247500Y-90388000D01*
222 | X148922500Y-93508000D02*
223 | X149572500Y-93508000D01*
224 | X148922500Y-90388000D02*
225 | X149572500Y-90388000D01*
226 | %TO.C,J4*%
227 | X144145000Y-98358000D02*
228 | X151825000Y-98358000D01*
229 | X141545000Y-98358000D02*
230 | X141545000Y-97028000D01*
231 | X144145000Y-98358000D02*
232 | X144145000Y-95698000D01*
233 | X151825000Y-98358000D02*
234 | X151825000Y-95698000D01*
235 | X142875000Y-98358000D02*
236 | X141545000Y-98358000D01*
237 | X144145000Y-95698000D02*
238 | X151825000Y-95698000D01*
239 | %TD*%
240 | M02*
241 |
--------------------------------------------------------------------------------
/pcb/generic/fab/try2-NPTH-drl_map.gbr:
--------------------------------------------------------------------------------
1 | %TF.GenerationSoftware,KiCad,Pcbnew,7.0.9*%
2 | %TF.CreationDate,2023-11-12T02:23:47+01:00*%
3 | %TF.ProjectId,try2,74727932-2e6b-4696-9361-645f70636258,rev?*%
4 | %TF.SameCoordinates,Original*%
5 | %TF.FileFunction,Drillmap*%
6 | %TF.FilePolarity,Positive*%
7 | %FSLAX45Y45*%
8 | G04 Gerber Fmt 4.5, Leading zero omitted, Abs format (unit mm)*
9 | G04 Created by KiCad (PCBNEW 7.0.9) date 2023-11-12 02:23:47*
10 | %MOMM*%
11 | %LPD*%
12 | G01*
13 | G04 APERTURE LIST*
14 | %ADD10C,0.100000*%
15 | %ADD11C,0.200000*%
16 | G04 APERTURE END LIST*
17 | D10*
18 | X13970000Y-8493760D02*
19 | X15367000Y-8493760D01*
20 | X15367000Y-9890760D01*
21 | X13970000Y-9890760D01*
22 | X13970000Y-8493760D01*
23 | D11*
24 | X14225777Y-10207244D02*
25 | X14225777Y-10007244D01*
26 | X14225777Y-10007244D02*
27 | X14273396Y-10007244D01*
28 | X14273396Y-10007244D02*
29 | X14301967Y-10016768D01*
30 | X14301967Y-10016768D02*
31 | X14321015Y-10035815D01*
32 | X14321015Y-10035815D02*
33 | X14330539Y-10054863D01*
34 | X14330539Y-10054863D02*
35 | X14340062Y-10092958D01*
36 | X14340062Y-10092958D02*
37 | X14340062Y-10121530D01*
38 | X14340062Y-10121530D02*
39 | X14330539Y-10159625D01*
40 | X14330539Y-10159625D02*
41 | X14321015Y-10178672D01*
42 | X14321015Y-10178672D02*
43 | X14301967Y-10197720D01*
44 | X14301967Y-10197720D02*
45 | X14273396Y-10207244D01*
46 | X14273396Y-10207244D02*
47 | X14225777Y-10207244D01*
48 | X14425777Y-10207244D02*
49 | X14425777Y-10073910D01*
50 | X14425777Y-10112006D02*
51 | X14435301Y-10092958D01*
52 | X14435301Y-10092958D02*
53 | X14444824Y-10083434D01*
54 | X14444824Y-10083434D02*
55 | X14463872Y-10073910D01*
56 | X14463872Y-10073910D02*
57 | X14482920Y-10073910D01*
58 | X14549586Y-10207244D02*
59 | X14549586Y-10073910D01*
60 | X14549586Y-10007244D02*
61 | X14540062Y-10016768D01*
62 | X14540062Y-10016768D02*
63 | X14549586Y-10026291D01*
64 | X14549586Y-10026291D02*
65 | X14559110Y-10016768D01*
66 | X14559110Y-10016768D02*
67 | X14549586Y-10007244D01*
68 | X14549586Y-10007244D02*
69 | X14549586Y-10026291D01*
70 | X14673396Y-10207244D02*
71 | X14654348Y-10197720D01*
72 | X14654348Y-10197720D02*
73 | X14644824Y-10178672D01*
74 | X14644824Y-10178672D02*
75 | X14644824Y-10007244D01*
76 | X14778158Y-10207244D02*
77 | X14759110Y-10197720D01*
78 | X14759110Y-10197720D02*
79 | X14749586Y-10178672D01*
80 | X14749586Y-10178672D02*
81 | X14749586Y-10007244D01*
82 | X15006729Y-10207244D02*
83 | X15006729Y-10007244D01*
84 | X15006729Y-10007244D02*
85 | X15073396Y-10150101D01*
86 | X15073396Y-10150101D02*
87 | X15140062Y-10007244D01*
88 | X15140062Y-10007244D02*
89 | X15140062Y-10207244D01*
90 | X15321015Y-10207244D02*
91 | X15321015Y-10102482D01*
92 | X15321015Y-10102482D02*
93 | X15311491Y-10083434D01*
94 | X15311491Y-10083434D02*
95 | X15292443Y-10073910D01*
96 | X15292443Y-10073910D02*
97 | X15254348Y-10073910D01*
98 | X15254348Y-10073910D02*
99 | X15235301Y-10083434D01*
100 | X15321015Y-10197720D02*
101 | X15301967Y-10207244D01*
102 | X15301967Y-10207244D02*
103 | X15254348Y-10207244D01*
104 | X15254348Y-10207244D02*
105 | X15235301Y-10197720D01*
106 | X15235301Y-10197720D02*
107 | X15225777Y-10178672D01*
108 | X15225777Y-10178672D02*
109 | X15225777Y-10159625D01*
110 | X15225777Y-10159625D02*
111 | X15235301Y-10140577D01*
112 | X15235301Y-10140577D02*
113 | X15254348Y-10131053D01*
114 | X15254348Y-10131053D02*
115 | X15301967Y-10131053D01*
116 | X15301967Y-10131053D02*
117 | X15321015Y-10121530D01*
118 | X15416253Y-10073910D02*
119 | X15416253Y-10273910D01*
120 | X15416253Y-10083434D02*
121 | X15435301Y-10073910D01*
122 | X15435301Y-10073910D02*
123 | X15473396Y-10073910D01*
124 | X15473396Y-10073910D02*
125 | X15492443Y-10083434D01*
126 | X15492443Y-10083434D02*
127 | X15501967Y-10092958D01*
128 | X15501967Y-10092958D02*
129 | X15511491Y-10112006D01*
130 | X15511491Y-10112006D02*
131 | X15511491Y-10169149D01*
132 | X15511491Y-10169149D02*
133 | X15501967Y-10188196D01*
134 | X15501967Y-10188196D02*
135 | X15492443Y-10197720D01*
136 | X15492443Y-10197720D02*
137 | X15473396Y-10207244D01*
138 | X15473396Y-10207244D02*
139 | X15435301Y-10207244D01*
140 | X15435301Y-10207244D02*
141 | X15416253Y-10197720D01*
142 | X15597205Y-10188196D02*
143 | X15606729Y-10197720D01*
144 | X15606729Y-10197720D02*
145 | X15597205Y-10207244D01*
146 | X15597205Y-10207244D02*
147 | X15587682Y-10197720D01*
148 | X15587682Y-10197720D02*
149 | X15597205Y-10188196D01*
150 | X15597205Y-10188196D02*
151 | X15597205Y-10207244D01*
152 | X15597205Y-10083434D02*
153 | X15606729Y-10092958D01*
154 | X15606729Y-10092958D02*
155 | X15597205Y-10102482D01*
156 | X15597205Y-10102482D02*
157 | X15587682Y-10092958D01*
158 | X15587682Y-10092958D02*
159 | X15597205Y-10083434D01*
160 | X15597205Y-10083434D02*
161 | X15597205Y-10102482D01*
162 | M02*
163 |
--------------------------------------------------------------------------------
/pcb/generic/fab/try2-NPTH.drl:
--------------------------------------------------------------------------------
1 | M48
2 | ; DRILL file {KiCad 7.0.9} date Sun Nov 12 02:22:47 2023
3 | ; FORMAT={-:-/ absolute / inch / decimal}
4 | ; #@! TF.CreationDate,2023-11-12T02:22:47+01:00
5 | ; #@! TF.GenerationSoftware,Kicad,Pcbnew,7.0.9
6 | ; #@! TF.FileFunction,NonPlated,1,2,NPTH
7 | FMAT,2
8 | INCH
9 | %
10 | G90
11 | G05
12 | T0
13 | M30
14 |
--------------------------------------------------------------------------------
/pcb/generic/fab/try2-PTH-drl_map.gbr:
--------------------------------------------------------------------------------
1 | %TF.GenerationSoftware,KiCad,Pcbnew,7.0.9*%
2 | %TF.CreationDate,2023-11-12T02:23:47+01:00*%
3 | %TF.ProjectId,try2,74727932-2e6b-4696-9361-645f70636258,rev?*%
4 | %TF.SameCoordinates,Original*%
5 | %TF.FileFunction,Drillmap*%
6 | %TF.FilePolarity,Positive*%
7 | %FSLAX45Y45*%
8 | G04 Gerber Fmt 4.5, Leading zero omitted, Abs format (unit mm)*
9 | G04 Created by KiCad (PCBNEW 7.0.9) date 2023-11-12 02:23:47*
10 | %MOMM*%
11 | %LPD*%
12 | G01*
13 | G04 APERTURE LIST*
14 | %ADD10C,0.100000*%
15 | %ADD11C,0.200000*%
16 | G04 APERTURE END LIST*
17 | D10*
18 | X13970000Y-8493760D02*
19 | X15367000Y-8493760D01*
20 | X15367000Y-9890760D01*
21 | X13970000Y-9890760D01*
22 | X13970000Y-8493760D01*
23 | D11*
24 | D10*
25 | X14495800Y-8641100D02*
26 | X14587200Y-8732500D01*
27 | X14587200Y-8641100D02*
28 | X14495800Y-8732500D01*
29 | X14495800Y-9657100D02*
30 | X14587200Y-9748500D01*
31 | X14587200Y-9657100D02*
32 | X14495800Y-9748500D01*
33 | X14749800Y-8641100D02*
34 | X14841200Y-8732500D01*
35 | X14841200Y-8641100D02*
36 | X14749800Y-8732500D01*
37 | X14749800Y-9657100D02*
38 | X14841200Y-9748500D01*
39 | X14841200Y-9657100D02*
40 | X14749800Y-9748500D01*
41 | X15003800Y-8641100D02*
42 | X15095200Y-8732500D01*
43 | X15095200Y-8641100D02*
44 | X15003800Y-8732500D01*
45 | X15003800Y-9657100D02*
46 | X15095200Y-9748500D01*
47 | X15095200Y-9657100D02*
48 | X15003800Y-9748500D01*
49 | X14337500Y-8686800D02*
50 | G75*
51 | G03*
52 | X14337500Y-8686800I-50000J0D01*
53 | G01*
54 | X14337500Y-9702800D02*
55 | G75*
56 | G03*
57 | X14337500Y-9702800I-50000J0D01*
58 | G01*
59 | D11*
60 | X14225777Y-10207244D02*
61 | X14225777Y-10007244D01*
62 | X14225777Y-10007244D02*
63 | X14273396Y-10007244D01*
64 | X14273396Y-10007244D02*
65 | X14301967Y-10016768D01*
66 | X14301967Y-10016768D02*
67 | X14321015Y-10035815D01*
68 | X14321015Y-10035815D02*
69 | X14330539Y-10054863D01*
70 | X14330539Y-10054863D02*
71 | X14340062Y-10092958D01*
72 | X14340062Y-10092958D02*
73 | X14340062Y-10121530D01*
74 | X14340062Y-10121530D02*
75 | X14330539Y-10159625D01*
76 | X14330539Y-10159625D02*
77 | X14321015Y-10178672D01*
78 | X14321015Y-10178672D02*
79 | X14301967Y-10197720D01*
80 | X14301967Y-10197720D02*
81 | X14273396Y-10207244D01*
82 | X14273396Y-10207244D02*
83 | X14225777Y-10207244D01*
84 | X14425777Y-10207244D02*
85 | X14425777Y-10073910D01*
86 | X14425777Y-10112006D02*
87 | X14435301Y-10092958D01*
88 | X14435301Y-10092958D02*
89 | X14444824Y-10083434D01*
90 | X14444824Y-10083434D02*
91 | X14463872Y-10073910D01*
92 | X14463872Y-10073910D02*
93 | X14482920Y-10073910D01*
94 | X14549586Y-10207244D02*
95 | X14549586Y-10073910D01*
96 | X14549586Y-10007244D02*
97 | X14540062Y-10016768D01*
98 | X14540062Y-10016768D02*
99 | X14549586Y-10026291D01*
100 | X14549586Y-10026291D02*
101 | X14559110Y-10016768D01*
102 | X14559110Y-10016768D02*
103 | X14549586Y-10007244D01*
104 | X14549586Y-10007244D02*
105 | X14549586Y-10026291D01*
106 | X14673396Y-10207244D02*
107 | X14654348Y-10197720D01*
108 | X14654348Y-10197720D02*
109 | X14644824Y-10178672D01*
110 | X14644824Y-10178672D02*
111 | X14644824Y-10007244D01*
112 | X14778158Y-10207244D02*
113 | X14759110Y-10197720D01*
114 | X14759110Y-10197720D02*
115 | X14749586Y-10178672D01*
116 | X14749586Y-10178672D02*
117 | X14749586Y-10007244D01*
118 | X15006729Y-10207244D02*
119 | X15006729Y-10007244D01*
120 | X15006729Y-10007244D02*
121 | X15073396Y-10150101D01*
122 | X15073396Y-10150101D02*
123 | X15140062Y-10007244D01*
124 | X15140062Y-10007244D02*
125 | X15140062Y-10207244D01*
126 | X15321015Y-10207244D02*
127 | X15321015Y-10102482D01*
128 | X15321015Y-10102482D02*
129 | X15311491Y-10083434D01*
130 | X15311491Y-10083434D02*
131 | X15292443Y-10073910D01*
132 | X15292443Y-10073910D02*
133 | X15254348Y-10073910D01*
134 | X15254348Y-10073910D02*
135 | X15235301Y-10083434D01*
136 | X15321015Y-10197720D02*
137 | X15301967Y-10207244D01*
138 | X15301967Y-10207244D02*
139 | X15254348Y-10207244D01*
140 | X15254348Y-10207244D02*
141 | X15235301Y-10197720D01*
142 | X15235301Y-10197720D02*
143 | X15225777Y-10178672D01*
144 | X15225777Y-10178672D02*
145 | X15225777Y-10159625D01*
146 | X15225777Y-10159625D02*
147 | X15235301Y-10140577D01*
148 | X15235301Y-10140577D02*
149 | X15254348Y-10131053D01*
150 | X15254348Y-10131053D02*
151 | X15301967Y-10131053D01*
152 | X15301967Y-10131053D02*
153 | X15321015Y-10121530D01*
154 | X15416253Y-10073910D02*
155 | X15416253Y-10273910D01*
156 | X15416253Y-10083434D02*
157 | X15435301Y-10073910D01*
158 | X15435301Y-10073910D02*
159 | X15473396Y-10073910D01*
160 | X15473396Y-10073910D02*
161 | X15492443Y-10083434D01*
162 | X15492443Y-10083434D02*
163 | X15501967Y-10092958D01*
164 | X15501967Y-10092958D02*
165 | X15511491Y-10112006D01*
166 | X15511491Y-10112006D02*
167 | X15511491Y-10169149D01*
168 | X15511491Y-10169149D02*
169 | X15501967Y-10188196D01*
170 | X15501967Y-10188196D02*
171 | X15492443Y-10197720D01*
172 | X15492443Y-10197720D02*
173 | X15473396Y-10207244D01*
174 | X15473396Y-10207244D02*
175 | X15435301Y-10207244D01*
176 | X15435301Y-10207244D02*
177 | X15416253Y-10197720D01*
178 | X15597205Y-10188196D02*
179 | X15606729Y-10197720D01*
180 | X15606729Y-10197720D02*
181 | X15597205Y-10207244D01*
182 | X15597205Y-10207244D02*
183 | X15587682Y-10197720D01*
184 | X15587682Y-10197720D02*
185 | X15597205Y-10188196D01*
186 | X15597205Y-10188196D02*
187 | X15597205Y-10207244D01*
188 | X15597205Y-10083434D02*
189 | X15606729Y-10092958D01*
190 | X15606729Y-10092958D02*
191 | X15597205Y-10102482D01*
192 | X15597205Y-10102482D02*
193 | X15587682Y-10092958D01*
194 | X15587682Y-10092958D02*
195 | X15597205Y-10083434D01*
196 | X15597205Y-10083434D02*
197 | X15597205Y-10102482D01*
198 | D10*
199 | X13873600Y-10490060D02*
200 | X13965000Y-10581460D01*
201 | X13965000Y-10490060D02*
202 | X13873600Y-10581460D01*
203 | D11*
204 | X14263872Y-10427244D02*
205 | X14282920Y-10427244D01*
206 | X14282920Y-10427244D02*
207 | X14301967Y-10436768D01*
208 | X14301967Y-10436768D02*
209 | X14311491Y-10446291D01*
210 | X14311491Y-10446291D02*
211 | X14321015Y-10465339D01*
212 | X14321015Y-10465339D02*
213 | X14330539Y-10503434D01*
214 | X14330539Y-10503434D02*
215 | X14330539Y-10551053D01*
216 | X14330539Y-10551053D02*
217 | X14321015Y-10589149D01*
218 | X14321015Y-10589149D02*
219 | X14311491Y-10608196D01*
220 | X14311491Y-10608196D02*
221 | X14301967Y-10617720D01*
222 | X14301967Y-10617720D02*
223 | X14282920Y-10627244D01*
224 | X14282920Y-10627244D02*
225 | X14263872Y-10627244D01*
226 | X14263872Y-10627244D02*
227 | X14244824Y-10617720D01*
228 | X14244824Y-10617720D02*
229 | X14235301Y-10608196D01*
230 | X14235301Y-10608196D02*
231 | X14225777Y-10589149D01*
232 | X14225777Y-10589149D02*
233 | X14216253Y-10551053D01*
234 | X14216253Y-10551053D02*
235 | X14216253Y-10503434D01*
236 | X14216253Y-10503434D02*
237 | X14225777Y-10465339D01*
238 | X14225777Y-10465339D02*
239 | X14235301Y-10446291D01*
240 | X14235301Y-10446291D02*
241 | X14244824Y-10436768D01*
242 | X14244824Y-10436768D02*
243 | X14263872Y-10427244D01*
244 | X14416253Y-10608196D02*
245 | X14425777Y-10617720D01*
246 | X14425777Y-10617720D02*
247 | X14416253Y-10627244D01*
248 | X14416253Y-10627244D02*
249 | X14406729Y-10617720D01*
250 | X14406729Y-10617720D02*
251 | X14416253Y-10608196D01*
252 | X14416253Y-10608196D02*
253 | X14416253Y-10627244D01*
254 | X14521015Y-10627244D02*
255 | X14559110Y-10627244D01*
256 | X14559110Y-10627244D02*
257 | X14578158Y-10617720D01*
258 | X14578158Y-10617720D02*
259 | X14587682Y-10608196D01*
260 | X14587682Y-10608196D02*
261 | X14606729Y-10579625D01*
262 | X14606729Y-10579625D02*
263 | X14616253Y-10541530D01*
264 | X14616253Y-10541530D02*
265 | X14616253Y-10465339D01*
266 | X14616253Y-10465339D02*
267 | X14606729Y-10446291D01*
268 | X14606729Y-10446291D02*
269 | X14597205Y-10436768D01*
270 | X14597205Y-10436768D02*
271 | X14578158Y-10427244D01*
272 | X14578158Y-10427244D02*
273 | X14540062Y-10427244D01*
274 | X14540062Y-10427244D02*
275 | X14521015Y-10436768D01*
276 | X14521015Y-10436768D02*
277 | X14511491Y-10446291D01*
278 | X14511491Y-10446291D02*
279 | X14501967Y-10465339D01*
280 | X14501967Y-10465339D02*
281 | X14501967Y-10512958D01*
282 | X14501967Y-10512958D02*
283 | X14511491Y-10532006D01*
284 | X14511491Y-10532006D02*
285 | X14521015Y-10541530D01*
286 | X14521015Y-10541530D02*
287 | X14540062Y-10551053D01*
288 | X14540062Y-10551053D02*
289 | X14578158Y-10551053D01*
290 | X14578158Y-10551053D02*
291 | X14597205Y-10541530D01*
292 | X14597205Y-10541530D02*
293 | X14606729Y-10532006D01*
294 | X14606729Y-10532006D02*
295 | X14616253Y-10512958D01*
296 | X14806729Y-10627244D02*
297 | X14692443Y-10627244D01*
298 | X14749586Y-10627244D02*
299 | X14749586Y-10427244D01*
300 | X14749586Y-10427244D02*
301 | X14730539Y-10455815D01*
302 | X14730539Y-10455815D02*
303 | X14711491Y-10474863D01*
304 | X14711491Y-10474863D02*
305 | X14692443Y-10484387D01*
306 | X14978158Y-10493910D02*
307 | X14978158Y-10627244D01*
308 | X14930539Y-10417720D02*
309 | X14882920Y-10560577D01*
310 | X14882920Y-10560577D02*
311 | X15006729Y-10560577D01*
312 | X15082920Y-10627244D02*
313 | X15082920Y-10493910D01*
314 | X15082920Y-10512958D02*
315 | X15092443Y-10503434D01*
316 | X15092443Y-10503434D02*
317 | X15111491Y-10493910D01*
318 | X15111491Y-10493910D02*
319 | X15140063Y-10493910D01*
320 | X15140063Y-10493910D02*
321 | X15159110Y-10503434D01*
322 | X15159110Y-10503434D02*
323 | X15168634Y-10522482D01*
324 | X15168634Y-10522482D02*
325 | X15168634Y-10627244D01*
326 | X15168634Y-10522482D02*
327 | X15178158Y-10503434D01*
328 | X15178158Y-10503434D02*
329 | X15197205Y-10493910D01*
330 | X15197205Y-10493910D02*
331 | X15225777Y-10493910D01*
332 | X15225777Y-10493910D02*
333 | X15244824Y-10503434D01*
334 | X15244824Y-10503434D02*
335 | X15254348Y-10522482D01*
336 | X15254348Y-10522482D02*
337 | X15254348Y-10627244D01*
338 | X15349586Y-10627244D02*
339 | X15349586Y-10493910D01*
340 | X15349586Y-10512958D02*
341 | X15359110Y-10503434D01*
342 | X15359110Y-10503434D02*
343 | X15378158Y-10493910D01*
344 | X15378158Y-10493910D02*
345 | X15406729Y-10493910D01*
346 | X15406729Y-10493910D02*
347 | X15425777Y-10503434D01*
348 | X15425777Y-10503434D02*
349 | X15435301Y-10522482D01*
350 | X15435301Y-10522482D02*
351 | X15435301Y-10627244D01*
352 | X15435301Y-10522482D02*
353 | X15444824Y-10503434D01*
354 | X15444824Y-10503434D02*
355 | X15463872Y-10493910D01*
356 | X15463872Y-10493910D02*
357 | X15492443Y-10493910D01*
358 | X15492443Y-10493910D02*
359 | X15511491Y-10503434D01*
360 | X15511491Y-10503434D02*
361 | X15521015Y-10522482D01*
362 | X15521015Y-10522482D02*
363 | X15521015Y-10627244D01*
364 | X15911491Y-10417720D02*
365 | X15740063Y-10674863D01*
366 | X16168634Y-10427244D02*
367 | X16187682Y-10427244D01*
368 | X16187682Y-10427244D02*
369 | X16206729Y-10436768D01*
370 | X16206729Y-10436768D02*
371 | X16216253Y-10446291D01*
372 | X16216253Y-10446291D02*
373 | X16225777Y-10465339D01*
374 | X16225777Y-10465339D02*
375 | X16235301Y-10503434D01*
376 | X16235301Y-10503434D02*
377 | X16235301Y-10551053D01*
378 | X16235301Y-10551053D02*
379 | X16225777Y-10589149D01*
380 | X16225777Y-10589149D02*
381 | X16216253Y-10608196D01*
382 | X16216253Y-10608196D02*
383 | X16206729Y-10617720D01*
384 | X16206729Y-10617720D02*
385 | X16187682Y-10627244D01*
386 | X16187682Y-10627244D02*
387 | X16168634Y-10627244D01*
388 | X16168634Y-10627244D02*
389 | X16149586Y-10617720D01*
390 | X16149586Y-10617720D02*
391 | X16140063Y-10608196D01*
392 | X16140063Y-10608196D02*
393 | X16130539Y-10589149D01*
394 | X16130539Y-10589149D02*
395 | X16121015Y-10551053D01*
396 | X16121015Y-10551053D02*
397 | X16121015Y-10503434D01*
398 | X16121015Y-10503434D02*
399 | X16130539Y-10465339D01*
400 | X16130539Y-10465339D02*
401 | X16140063Y-10446291D01*
402 | X16140063Y-10446291D02*
403 | X16149586Y-10436768D01*
404 | X16149586Y-10436768D02*
405 | X16168634Y-10427244D01*
406 | X16321015Y-10608196D02*
407 | X16330539Y-10617720D01*
408 | X16330539Y-10617720D02*
409 | X16321015Y-10627244D01*
410 | X16321015Y-10627244D02*
411 | X16311491Y-10617720D01*
412 | X16311491Y-10617720D02*
413 | X16321015Y-10608196D01*
414 | X16321015Y-10608196D02*
415 | X16321015Y-10627244D01*
416 | X16454348Y-10427244D02*
417 | X16473396Y-10427244D01*
418 | X16473396Y-10427244D02*
419 | X16492444Y-10436768D01*
420 | X16492444Y-10436768D02*
421 | X16501967Y-10446291D01*
422 | X16501967Y-10446291D02*
423 | X16511491Y-10465339D01*
424 | X16511491Y-10465339D02*
425 | X16521015Y-10503434D01*
426 | X16521015Y-10503434D02*
427 | X16521015Y-10551053D01*
428 | X16521015Y-10551053D02*
429 | X16511491Y-10589149D01*
430 | X16511491Y-10589149D02*
431 | X16501967Y-10608196D01*
432 | X16501967Y-10608196D02*
433 | X16492444Y-10617720D01*
434 | X16492444Y-10617720D02*
435 | X16473396Y-10627244D01*
436 | X16473396Y-10627244D02*
437 | X16454348Y-10627244D01*
438 | X16454348Y-10627244D02*
439 | X16435301Y-10617720D01*
440 | X16435301Y-10617720D02*
441 | X16425777Y-10608196D01*
442 | X16425777Y-10608196D02*
443 | X16416253Y-10589149D01*
444 | X16416253Y-10589149D02*
445 | X16406729Y-10551053D01*
446 | X16406729Y-10551053D02*
447 | X16406729Y-10503434D01*
448 | X16406729Y-10503434D02*
449 | X16416253Y-10465339D01*
450 | X16416253Y-10465339D02*
451 | X16425777Y-10446291D01*
452 | X16425777Y-10446291D02*
453 | X16435301Y-10436768D01*
454 | X16435301Y-10436768D02*
455 | X16454348Y-10427244D01*
456 | X16587682Y-10427244D02*
457 | X16711491Y-10427244D01*
458 | X16711491Y-10427244D02*
459 | X16644825Y-10503434D01*
460 | X16644825Y-10503434D02*
461 | X16673396Y-10503434D01*
462 | X16673396Y-10503434D02*
463 | X16692444Y-10512958D01*
464 | X16692444Y-10512958D02*
465 | X16701967Y-10522482D01*
466 | X16701967Y-10522482D02*
467 | X16711491Y-10541530D01*
468 | X16711491Y-10541530D02*
469 | X16711491Y-10589149D01*
470 | X16711491Y-10589149D02*
471 | X16701967Y-10608196D01*
472 | X16701967Y-10608196D02*
473 | X16692444Y-10617720D01*
474 | X16692444Y-10617720D02*
475 | X16673396Y-10627244D01*
476 | X16673396Y-10627244D02*
477 | X16616253Y-10627244D01*
478 | X16616253Y-10627244D02*
479 | X16597206Y-10617720D01*
480 | X16597206Y-10617720D02*
481 | X16587682Y-10608196D01*
482 | X16882920Y-10427244D02*
483 | X16844825Y-10427244D01*
484 | X16844825Y-10427244D02*
485 | X16825777Y-10436768D01*
486 | X16825777Y-10436768D02*
487 | X16816253Y-10446291D01*
488 | X16816253Y-10446291D02*
489 | X16797206Y-10474863D01*
490 | X16797206Y-10474863D02*
491 | X16787682Y-10512958D01*
492 | X16787682Y-10512958D02*
493 | X16787682Y-10589149D01*
494 | X16787682Y-10589149D02*
495 | X16797206Y-10608196D01*
496 | X16797206Y-10608196D02*
497 | X16806729Y-10617720D01*
498 | X16806729Y-10617720D02*
499 | X16825777Y-10627244D01*
500 | X16825777Y-10627244D02*
501 | X16863872Y-10627244D01*
502 | X16863872Y-10627244D02*
503 | X16882920Y-10617720D01*
504 | X16882920Y-10617720D02*
505 | X16892444Y-10608196D01*
506 | X16892444Y-10608196D02*
507 | X16901968Y-10589149D01*
508 | X16901968Y-10589149D02*
509 | X16901968Y-10541530D01*
510 | X16901968Y-10541530D02*
511 | X16892444Y-10522482D01*
512 | X16892444Y-10522482D02*
513 | X16882920Y-10512958D01*
514 | X16882920Y-10512958D02*
515 | X16863872Y-10503434D01*
516 | X16863872Y-10503434D02*
517 | X16825777Y-10503434D01*
518 | X16825777Y-10503434D02*
519 | X16806729Y-10512958D01*
520 | X16806729Y-10512958D02*
521 | X16797206Y-10522482D01*
522 | X16797206Y-10522482D02*
523 | X16787682Y-10541530D01*
524 | X17025777Y-10427244D02*
525 | X17044825Y-10427244D01*
526 | X17044825Y-10427244D02*
527 | X17063872Y-10436768D01*
528 | X17063872Y-10436768D02*
529 | X17073396Y-10446291D01*
530 | X17073396Y-10446291D02*
531 | X17082920Y-10465339D01*
532 | X17082920Y-10465339D02*
533 | X17092444Y-10503434D01*
534 | X17092444Y-10503434D02*
535 | X17092444Y-10551053D01*
536 | X17092444Y-10551053D02*
537 | X17082920Y-10589149D01*
538 | X17082920Y-10589149D02*
539 | X17073396Y-10608196D01*
540 | X17073396Y-10608196D02*
541 | X17063872Y-10617720D01*
542 | X17063872Y-10617720D02*
543 | X17044825Y-10627244D01*
544 | X17044825Y-10627244D02*
545 | X17025777Y-10627244D01*
546 | X17025777Y-10627244D02*
547 | X17006729Y-10617720D01*
548 | X17006729Y-10617720D02*
549 | X16997206Y-10608196D01*
550 | X16997206Y-10608196D02*
551 | X16987682Y-10589149D01*
552 | X16987682Y-10589149D02*
553 | X16978158Y-10551053D01*
554 | X16978158Y-10551053D02*
555 | X16978158Y-10503434D01*
556 | X16978158Y-10503434D02*
557 | X16987682Y-10465339D01*
558 | X16987682Y-10465339D02*
559 | X16997206Y-10446291D01*
560 | X16997206Y-10446291D02*
561 | X17006729Y-10436768D01*
562 | X17006729Y-10436768D02*
563 | X17025777Y-10427244D01*
564 | X17168634Y-10427244D02*
565 | X17168634Y-10465339D01*
566 | X17244825Y-10427244D02*
567 | X17244825Y-10465339D01*
568 | X17540063Y-10703434D02*
569 | X17530539Y-10693910D01*
570 | X17530539Y-10693910D02*
571 | X17511491Y-10665339D01*
572 | X17511491Y-10665339D02*
573 | X17501968Y-10646291D01*
574 | X17501968Y-10646291D02*
575 | X17492444Y-10617720D01*
576 | X17492444Y-10617720D02*
577 | X17482920Y-10570101D01*
578 | X17482920Y-10570101D02*
579 | X17482920Y-10532006D01*
580 | X17482920Y-10532006D02*
581 | X17492444Y-10484387D01*
582 | X17492444Y-10484387D02*
583 | X17501968Y-10455815D01*
584 | X17501968Y-10455815D02*
585 | X17511491Y-10436768D01*
586 | X17511491Y-10436768D02*
587 | X17530539Y-10408196D01*
588 | X17530539Y-10408196D02*
589 | X17540063Y-10398672D01*
590 | X17701968Y-10427244D02*
591 | X17663872Y-10427244D01*
592 | X17663872Y-10427244D02*
593 | X17644825Y-10436768D01*
594 | X17644825Y-10436768D02*
595 | X17635301Y-10446291D01*
596 | X17635301Y-10446291D02*
597 | X17616253Y-10474863D01*
598 | X17616253Y-10474863D02*
599 | X17606730Y-10512958D01*
600 | X17606730Y-10512958D02*
601 | X17606730Y-10589149D01*
602 | X17606730Y-10589149D02*
603 | X17616253Y-10608196D01*
604 | X17616253Y-10608196D02*
605 | X17625777Y-10617720D01*
606 | X17625777Y-10617720D02*
607 | X17644825Y-10627244D01*
608 | X17644825Y-10627244D02*
609 | X17682920Y-10627244D01*
610 | X17682920Y-10627244D02*
611 | X17701968Y-10617720D01*
612 | X17701968Y-10617720D02*
613 | X17711491Y-10608196D01*
614 | X17711491Y-10608196D02*
615 | X17721015Y-10589149D01*
616 | X17721015Y-10589149D02*
617 | X17721015Y-10541530D01*
618 | X17721015Y-10541530D02*
619 | X17711491Y-10522482D01*
620 | X17711491Y-10522482D02*
621 | X17701968Y-10512958D01*
622 | X17701968Y-10512958D02*
623 | X17682920Y-10503434D01*
624 | X17682920Y-10503434D02*
625 | X17644825Y-10503434D01*
626 | X17644825Y-10503434D02*
627 | X17625777Y-10512958D01*
628 | X17625777Y-10512958D02*
629 | X17616253Y-10522482D01*
630 | X17616253Y-10522482D02*
631 | X17606730Y-10541530D01*
632 | X17959111Y-10627244D02*
633 | X17959111Y-10427244D01*
634 | X18044825Y-10627244D02*
635 | X18044825Y-10522482D01*
636 | X18044825Y-10522482D02*
637 | X18035301Y-10503434D01*
638 | X18035301Y-10503434D02*
639 | X18016253Y-10493910D01*
640 | X18016253Y-10493910D02*
641 | X17987682Y-10493910D01*
642 | X17987682Y-10493910D02*
643 | X17968634Y-10503434D01*
644 | X17968634Y-10503434D02*
645 | X17959111Y-10512958D01*
646 | X18168634Y-10627244D02*
647 | X18149587Y-10617720D01*
648 | X18149587Y-10617720D02*
649 | X18140063Y-10608196D01*
650 | X18140063Y-10608196D02*
651 | X18130539Y-10589149D01*
652 | X18130539Y-10589149D02*
653 | X18130539Y-10532006D01*
654 | X18130539Y-10532006D02*
655 | X18140063Y-10512958D01*
656 | X18140063Y-10512958D02*
657 | X18149587Y-10503434D01*
658 | X18149587Y-10503434D02*
659 | X18168634Y-10493910D01*
660 | X18168634Y-10493910D02*
661 | X18197206Y-10493910D01*
662 | X18197206Y-10493910D02*
663 | X18216253Y-10503434D01*
664 | X18216253Y-10503434D02*
665 | X18225777Y-10512958D01*
666 | X18225777Y-10512958D02*
667 | X18235301Y-10532006D01*
668 | X18235301Y-10532006D02*
669 | X18235301Y-10589149D01*
670 | X18235301Y-10589149D02*
671 | X18225777Y-10608196D01*
672 | X18225777Y-10608196D02*
673 | X18216253Y-10617720D01*
674 | X18216253Y-10617720D02*
675 | X18197206Y-10627244D01*
676 | X18197206Y-10627244D02*
677 | X18168634Y-10627244D01*
678 | X18349587Y-10627244D02*
679 | X18330539Y-10617720D01*
680 | X18330539Y-10617720D02*
681 | X18321015Y-10598672D01*
682 | X18321015Y-10598672D02*
683 | X18321015Y-10427244D01*
684 | X18501968Y-10617720D02*
685 | X18482920Y-10627244D01*
686 | X18482920Y-10627244D02*
687 | X18444825Y-10627244D01*
688 | X18444825Y-10627244D02*
689 | X18425777Y-10617720D01*
690 | X18425777Y-10617720D02*
691 | X18416253Y-10598672D01*
692 | X18416253Y-10598672D02*
693 | X18416253Y-10522482D01*
694 | X18416253Y-10522482D02*
695 | X18425777Y-10503434D01*
696 | X18425777Y-10503434D02*
697 | X18444825Y-10493910D01*
698 | X18444825Y-10493910D02*
699 | X18482920Y-10493910D01*
700 | X18482920Y-10493910D02*
701 | X18501968Y-10503434D01*
702 | X18501968Y-10503434D02*
703 | X18511492Y-10522482D01*
704 | X18511492Y-10522482D02*
705 | X18511492Y-10541530D01*
706 | X18511492Y-10541530D02*
707 | X18416253Y-10560577D01*
708 | X18587682Y-10617720D02*
709 | X18606730Y-10627244D01*
710 | X18606730Y-10627244D02*
711 | X18644825Y-10627244D01*
712 | X18644825Y-10627244D02*
713 | X18663873Y-10617720D01*
714 | X18663873Y-10617720D02*
715 | X18673396Y-10598672D01*
716 | X18673396Y-10598672D02*
717 | X18673396Y-10589149D01*
718 | X18673396Y-10589149D02*
719 | X18663873Y-10570101D01*
720 | X18663873Y-10570101D02*
721 | X18644825Y-10560577D01*
722 | X18644825Y-10560577D02*
723 | X18616253Y-10560577D01*
724 | X18616253Y-10560577D02*
725 | X18597206Y-10551053D01*
726 | X18597206Y-10551053D02*
727 | X18587682Y-10532006D01*
728 | X18587682Y-10532006D02*
729 | X18587682Y-10522482D01*
730 | X18587682Y-10522482D02*
731 | X18597206Y-10503434D01*
732 | X18597206Y-10503434D02*
733 | X18616253Y-10493910D01*
734 | X18616253Y-10493910D02*
735 | X18644825Y-10493910D01*
736 | X18644825Y-10493910D02*
737 | X18663873Y-10503434D01*
738 | X18740063Y-10703434D02*
739 | X18749587Y-10693910D01*
740 | X18749587Y-10693910D02*
741 | X18768634Y-10665339D01*
742 | X18768634Y-10665339D02*
743 | X18778158Y-10646291D01*
744 | X18778158Y-10646291D02*
745 | X18787682Y-10617720D01*
746 | X18787682Y-10617720D02*
747 | X18797206Y-10570101D01*
748 | X18797206Y-10570101D02*
749 | X18797206Y-10532006D01*
750 | X18797206Y-10532006D02*
751 | X18787682Y-10484387D01*
752 | X18787682Y-10484387D02*
753 | X18778158Y-10455815D01*
754 | X18778158Y-10455815D02*
755 | X18768634Y-10436768D01*
756 | X18768634Y-10436768D02*
757 | X18749587Y-10408196D01*
758 | X18749587Y-10408196D02*
759 | X18740063Y-10398672D01*
760 | D10*
761 | X13965000Y-10799760D02*
762 | G75*
763 | G03*
764 | X13965000Y-10799760I-50000J0D01*
765 | G01*
766 | D11*
767 | X14330539Y-10891244D02*
768 | X14216253Y-10891244D01*
769 | X14273396Y-10891244D02*
770 | X14273396Y-10691244D01*
771 | X14273396Y-10691244D02*
772 | X14254348Y-10719815D01*
773 | X14254348Y-10719815D02*
774 | X14235301Y-10738863D01*
775 | X14235301Y-10738863D02*
776 | X14216253Y-10748387D01*
777 | X14416253Y-10872196D02*
778 | X14425777Y-10881720D01*
779 | X14425777Y-10881720D02*
780 | X14416253Y-10891244D01*
781 | X14416253Y-10891244D02*
782 | X14406729Y-10881720D01*
783 | X14406729Y-10881720D02*
784 | X14416253Y-10872196D01*
785 | X14416253Y-10872196D02*
786 | X14416253Y-10891244D01*
787 | X14549586Y-10691244D02*
788 | X14568634Y-10691244D01*
789 | X14568634Y-10691244D02*
790 | X14587682Y-10700768D01*
791 | X14587682Y-10700768D02*
792 | X14597205Y-10710291D01*
793 | X14597205Y-10710291D02*
794 | X14606729Y-10729339D01*
795 | X14606729Y-10729339D02*
796 | X14616253Y-10767434D01*
797 | X14616253Y-10767434D02*
798 | X14616253Y-10815053D01*
799 | X14616253Y-10815053D02*
800 | X14606729Y-10853149D01*
801 | X14606729Y-10853149D02*
802 | X14597205Y-10872196D01*
803 | X14597205Y-10872196D02*
804 | X14587682Y-10881720D01*
805 | X14587682Y-10881720D02*
806 | X14568634Y-10891244D01*
807 | X14568634Y-10891244D02*
808 | X14549586Y-10891244D01*
809 | X14549586Y-10891244D02*
810 | X14530539Y-10881720D01*
811 | X14530539Y-10881720D02*
812 | X14521015Y-10872196D01*
813 | X14521015Y-10872196D02*
814 | X14511491Y-10853149D01*
815 | X14511491Y-10853149D02*
816 | X14501967Y-10815053D01*
817 | X14501967Y-10815053D02*
818 | X14501967Y-10767434D01*
819 | X14501967Y-10767434D02*
820 | X14511491Y-10729339D01*
821 | X14511491Y-10729339D02*
822 | X14521015Y-10710291D01*
823 | X14521015Y-10710291D02*
824 | X14530539Y-10700768D01*
825 | X14530539Y-10700768D02*
826 | X14549586Y-10691244D01*
827 | X14740062Y-10691244D02*
828 | X14759110Y-10691244D01*
829 | X14759110Y-10691244D02*
830 | X14778158Y-10700768D01*
831 | X14778158Y-10700768D02*
832 | X14787682Y-10710291D01*
833 | X14787682Y-10710291D02*
834 | X14797205Y-10729339D01*
835 | X14797205Y-10729339D02*
836 | X14806729Y-10767434D01*
837 | X14806729Y-10767434D02*
838 | X14806729Y-10815053D01*
839 | X14806729Y-10815053D02*
840 | X14797205Y-10853149D01*
841 | X14797205Y-10853149D02*
842 | X14787682Y-10872196D01*
843 | X14787682Y-10872196D02*
844 | X14778158Y-10881720D01*
845 | X14778158Y-10881720D02*
846 | X14759110Y-10891244D01*
847 | X14759110Y-10891244D02*
848 | X14740062Y-10891244D01*
849 | X14740062Y-10891244D02*
850 | X14721015Y-10881720D01*
851 | X14721015Y-10881720D02*
852 | X14711491Y-10872196D01*
853 | X14711491Y-10872196D02*
854 | X14701967Y-10853149D01*
855 | X14701967Y-10853149D02*
856 | X14692443Y-10815053D01*
857 | X14692443Y-10815053D02*
858 | X14692443Y-10767434D01*
859 | X14692443Y-10767434D02*
860 | X14701967Y-10729339D01*
861 | X14701967Y-10729339D02*
862 | X14711491Y-10710291D01*
863 | X14711491Y-10710291D02*
864 | X14721015Y-10700768D01*
865 | X14721015Y-10700768D02*
866 | X14740062Y-10691244D01*
867 | X14930539Y-10691244D02*
868 | X14949586Y-10691244D01*
869 | X14949586Y-10691244D02*
870 | X14968634Y-10700768D01*
871 | X14968634Y-10700768D02*
872 | X14978158Y-10710291D01*
873 | X14978158Y-10710291D02*
874 | X14987682Y-10729339D01*
875 | X14987682Y-10729339D02*
876 | X14997205Y-10767434D01*
877 | X14997205Y-10767434D02*
878 | X14997205Y-10815053D01*
879 | X14997205Y-10815053D02*
880 | X14987682Y-10853149D01*
881 | X14987682Y-10853149D02*
882 | X14978158Y-10872196D01*
883 | X14978158Y-10872196D02*
884 | X14968634Y-10881720D01*
885 | X14968634Y-10881720D02*
886 | X14949586Y-10891244D01*
887 | X14949586Y-10891244D02*
888 | X14930539Y-10891244D01*
889 | X14930539Y-10891244D02*
890 | X14911491Y-10881720D01*
891 | X14911491Y-10881720D02*
892 | X14901967Y-10872196D01*
893 | X14901967Y-10872196D02*
894 | X14892443Y-10853149D01*
895 | X14892443Y-10853149D02*
896 | X14882920Y-10815053D01*
897 | X14882920Y-10815053D02*
898 | X14882920Y-10767434D01*
899 | X14882920Y-10767434D02*
900 | X14892443Y-10729339D01*
901 | X14892443Y-10729339D02*
902 | X14901967Y-10710291D01*
903 | X14901967Y-10710291D02*
904 | X14911491Y-10700768D01*
905 | X14911491Y-10700768D02*
906 | X14930539Y-10691244D01*
907 | X15082920Y-10891244D02*
908 | X15082920Y-10757910D01*
909 | X15082920Y-10776958D02*
910 | X15092443Y-10767434D01*
911 | X15092443Y-10767434D02*
912 | X15111491Y-10757910D01*
913 | X15111491Y-10757910D02*
914 | X15140063Y-10757910D01*
915 | X15140063Y-10757910D02*
916 | X15159110Y-10767434D01*
917 | X15159110Y-10767434D02*
918 | X15168634Y-10786482D01*
919 | X15168634Y-10786482D02*
920 | X15168634Y-10891244D01*
921 | X15168634Y-10786482D02*
922 | X15178158Y-10767434D01*
923 | X15178158Y-10767434D02*
924 | X15197205Y-10757910D01*
925 | X15197205Y-10757910D02*
926 | X15225777Y-10757910D01*
927 | X15225777Y-10757910D02*
928 | X15244824Y-10767434D01*
929 | X15244824Y-10767434D02*
930 | X15254348Y-10786482D01*
931 | X15254348Y-10786482D02*
932 | X15254348Y-10891244D01*
933 | X15349586Y-10891244D02*
934 | X15349586Y-10757910D01*
935 | X15349586Y-10776958D02*
936 | X15359110Y-10767434D01*
937 | X15359110Y-10767434D02*
938 | X15378158Y-10757910D01*
939 | X15378158Y-10757910D02*
940 | X15406729Y-10757910D01*
941 | X15406729Y-10757910D02*
942 | X15425777Y-10767434D01*
943 | X15425777Y-10767434D02*
944 | X15435301Y-10786482D01*
945 | X15435301Y-10786482D02*
946 | X15435301Y-10891244D01*
947 | X15435301Y-10786482D02*
948 | X15444824Y-10767434D01*
949 | X15444824Y-10767434D02*
950 | X15463872Y-10757910D01*
951 | X15463872Y-10757910D02*
952 | X15492443Y-10757910D01*
953 | X15492443Y-10757910D02*
954 | X15511491Y-10767434D01*
955 | X15511491Y-10767434D02*
956 | X15521015Y-10786482D01*
957 | X15521015Y-10786482D02*
958 | X15521015Y-10891244D01*
959 | X15911491Y-10681720D02*
960 | X15740063Y-10938863D01*
961 | X16168634Y-10691244D02*
962 | X16187682Y-10691244D01*
963 | X16187682Y-10691244D02*
964 | X16206729Y-10700768D01*
965 | X16206729Y-10700768D02*
966 | X16216253Y-10710291D01*
967 | X16216253Y-10710291D02*
968 | X16225777Y-10729339D01*
969 | X16225777Y-10729339D02*
970 | X16235301Y-10767434D01*
971 | X16235301Y-10767434D02*
972 | X16235301Y-10815053D01*
973 | X16235301Y-10815053D02*
974 | X16225777Y-10853149D01*
975 | X16225777Y-10853149D02*
976 | X16216253Y-10872196D01*
977 | X16216253Y-10872196D02*
978 | X16206729Y-10881720D01*
979 | X16206729Y-10881720D02*
980 | X16187682Y-10891244D01*
981 | X16187682Y-10891244D02*
982 | X16168634Y-10891244D01*
983 | X16168634Y-10891244D02*
984 | X16149586Y-10881720D01*
985 | X16149586Y-10881720D02*
986 | X16140063Y-10872196D01*
987 | X16140063Y-10872196D02*
988 | X16130539Y-10853149D01*
989 | X16130539Y-10853149D02*
990 | X16121015Y-10815053D01*
991 | X16121015Y-10815053D02*
992 | X16121015Y-10767434D01*
993 | X16121015Y-10767434D02*
994 | X16130539Y-10729339D01*
995 | X16130539Y-10729339D02*
996 | X16140063Y-10710291D01*
997 | X16140063Y-10710291D02*
998 | X16149586Y-10700768D01*
999 | X16149586Y-10700768D02*
1000 | X16168634Y-10691244D01*
1001 | X16321015Y-10872196D02*
1002 | X16330539Y-10881720D01*
1003 | X16330539Y-10881720D02*
1004 | X16321015Y-10891244D01*
1005 | X16321015Y-10891244D02*
1006 | X16311491Y-10881720D01*
1007 | X16311491Y-10881720D02*
1008 | X16321015Y-10872196D01*
1009 | X16321015Y-10872196D02*
1010 | X16321015Y-10891244D01*
1011 | X16454348Y-10691244D02*
1012 | X16473396Y-10691244D01*
1013 | X16473396Y-10691244D02*
1014 | X16492444Y-10700768D01*
1015 | X16492444Y-10700768D02*
1016 | X16501967Y-10710291D01*
1017 | X16501967Y-10710291D02*
1018 | X16511491Y-10729339D01*
1019 | X16511491Y-10729339D02*
1020 | X16521015Y-10767434D01*
1021 | X16521015Y-10767434D02*
1022 | X16521015Y-10815053D01*
1023 | X16521015Y-10815053D02*
1024 | X16511491Y-10853149D01*
1025 | X16511491Y-10853149D02*
1026 | X16501967Y-10872196D01*
1027 | X16501967Y-10872196D02*
1028 | X16492444Y-10881720D01*
1029 | X16492444Y-10881720D02*
1030 | X16473396Y-10891244D01*
1031 | X16473396Y-10891244D02*
1032 | X16454348Y-10891244D01*
1033 | X16454348Y-10891244D02*
1034 | X16435301Y-10881720D01*
1035 | X16435301Y-10881720D02*
1036 | X16425777Y-10872196D01*
1037 | X16425777Y-10872196D02*
1038 | X16416253Y-10853149D01*
1039 | X16416253Y-10853149D02*
1040 | X16406729Y-10815053D01*
1041 | X16406729Y-10815053D02*
1042 | X16406729Y-10767434D01*
1043 | X16406729Y-10767434D02*
1044 | X16416253Y-10729339D01*
1045 | X16416253Y-10729339D02*
1046 | X16425777Y-10710291D01*
1047 | X16425777Y-10710291D02*
1048 | X16435301Y-10700768D01*
1049 | X16435301Y-10700768D02*
1050 | X16454348Y-10691244D01*
1051 | X16587682Y-10691244D02*
1052 | X16711491Y-10691244D01*
1053 | X16711491Y-10691244D02*
1054 | X16644825Y-10767434D01*
1055 | X16644825Y-10767434D02*
1056 | X16673396Y-10767434D01*
1057 | X16673396Y-10767434D02*
1058 | X16692444Y-10776958D01*
1059 | X16692444Y-10776958D02*
1060 | X16701967Y-10786482D01*
1061 | X16701967Y-10786482D02*
1062 | X16711491Y-10805530D01*
1063 | X16711491Y-10805530D02*
1064 | X16711491Y-10853149D01*
1065 | X16711491Y-10853149D02*
1066 | X16701967Y-10872196D01*
1067 | X16701967Y-10872196D02*
1068 | X16692444Y-10881720D01*
1069 | X16692444Y-10881720D02*
1070 | X16673396Y-10891244D01*
1071 | X16673396Y-10891244D02*
1072 | X16616253Y-10891244D01*
1073 | X16616253Y-10891244D02*
1074 | X16597206Y-10881720D01*
1075 | X16597206Y-10881720D02*
1076 | X16587682Y-10872196D01*
1077 | X16806729Y-10891244D02*
1078 | X16844825Y-10891244D01*
1079 | X16844825Y-10891244D02*
1080 | X16863872Y-10881720D01*
1081 | X16863872Y-10881720D02*
1082 | X16873396Y-10872196D01*
1083 | X16873396Y-10872196D02*
1084 | X16892444Y-10843625D01*
1085 | X16892444Y-10843625D02*
1086 | X16901968Y-10805530D01*
1087 | X16901968Y-10805530D02*
1088 | X16901968Y-10729339D01*
1089 | X16901968Y-10729339D02*
1090 | X16892444Y-10710291D01*
1091 | X16892444Y-10710291D02*
1092 | X16882920Y-10700768D01*
1093 | X16882920Y-10700768D02*
1094 | X16863872Y-10691244D01*
1095 | X16863872Y-10691244D02*
1096 | X16825777Y-10691244D01*
1097 | X16825777Y-10691244D02*
1098 | X16806729Y-10700768D01*
1099 | X16806729Y-10700768D02*
1100 | X16797206Y-10710291D01*
1101 | X16797206Y-10710291D02*
1102 | X16787682Y-10729339D01*
1103 | X16787682Y-10729339D02*
1104 | X16787682Y-10776958D01*
1105 | X16787682Y-10776958D02*
1106 | X16797206Y-10796006D01*
1107 | X16797206Y-10796006D02*
1108 | X16806729Y-10805530D01*
1109 | X16806729Y-10805530D02*
1110 | X16825777Y-10815053D01*
1111 | X16825777Y-10815053D02*
1112 | X16863872Y-10815053D01*
1113 | X16863872Y-10815053D02*
1114 | X16882920Y-10805530D01*
1115 | X16882920Y-10805530D02*
1116 | X16892444Y-10796006D01*
1117 | X16892444Y-10796006D02*
1118 | X16901968Y-10776958D01*
1119 | X17073396Y-10757910D02*
1120 | X17073396Y-10891244D01*
1121 | X17025777Y-10681720D02*
1122 | X16978158Y-10824577D01*
1123 | X16978158Y-10824577D02*
1124 | X17101968Y-10824577D01*
1125 | X17168634Y-10691244D02*
1126 | X17168634Y-10729339D01*
1127 | X17244825Y-10691244D02*
1128 | X17244825Y-10729339D01*
1129 | X17540063Y-10967434D02*
1130 | X17530539Y-10957910D01*
1131 | X17530539Y-10957910D02*
1132 | X17511491Y-10929339D01*
1133 | X17511491Y-10929339D02*
1134 | X17501968Y-10910291D01*
1135 | X17501968Y-10910291D02*
1136 | X17492444Y-10881720D01*
1137 | X17492444Y-10881720D02*
1138 | X17482920Y-10834101D01*
1139 | X17482920Y-10834101D02*
1140 | X17482920Y-10796006D01*
1141 | X17482920Y-10796006D02*
1142 | X17492444Y-10748387D01*
1143 | X17492444Y-10748387D02*
1144 | X17501968Y-10719815D01*
1145 | X17501968Y-10719815D02*
1146 | X17511491Y-10700768D01*
1147 | X17511491Y-10700768D02*
1148 | X17530539Y-10672196D01*
1149 | X17530539Y-10672196D02*
1150 | X17540063Y-10662672D01*
1151 | X17606730Y-10710291D02*
1152 | X17616253Y-10700768D01*
1153 | X17616253Y-10700768D02*
1154 | X17635301Y-10691244D01*
1155 | X17635301Y-10691244D02*
1156 | X17682920Y-10691244D01*
1157 | X17682920Y-10691244D02*
1158 | X17701968Y-10700768D01*
1159 | X17701968Y-10700768D02*
1160 | X17711491Y-10710291D01*
1161 | X17711491Y-10710291D02*
1162 | X17721015Y-10729339D01*
1163 | X17721015Y-10729339D02*
1164 | X17721015Y-10748387D01*
1165 | X17721015Y-10748387D02*
1166 | X17711491Y-10776958D01*
1167 | X17711491Y-10776958D02*
1168 | X17597206Y-10891244D01*
1169 | X17597206Y-10891244D02*
1170 | X17721015Y-10891244D01*
1171 | X17959111Y-10891244D02*
1172 | X17959111Y-10691244D01*
1173 | X18044825Y-10891244D02*
1174 | X18044825Y-10786482D01*
1175 | X18044825Y-10786482D02*
1176 | X18035301Y-10767434D01*
1177 | X18035301Y-10767434D02*
1178 | X18016253Y-10757910D01*
1179 | X18016253Y-10757910D02*
1180 | X17987682Y-10757910D01*
1181 | X17987682Y-10757910D02*
1182 | X17968634Y-10767434D01*
1183 | X17968634Y-10767434D02*
1184 | X17959111Y-10776958D01*
1185 | X18168634Y-10891244D02*
1186 | X18149587Y-10881720D01*
1187 | X18149587Y-10881720D02*
1188 | X18140063Y-10872196D01*
1189 | X18140063Y-10872196D02*
1190 | X18130539Y-10853149D01*
1191 | X18130539Y-10853149D02*
1192 | X18130539Y-10796006D01*
1193 | X18130539Y-10796006D02*
1194 | X18140063Y-10776958D01*
1195 | X18140063Y-10776958D02*
1196 | X18149587Y-10767434D01*
1197 | X18149587Y-10767434D02*
1198 | X18168634Y-10757910D01*
1199 | X18168634Y-10757910D02*
1200 | X18197206Y-10757910D01*
1201 | X18197206Y-10757910D02*
1202 | X18216253Y-10767434D01*
1203 | X18216253Y-10767434D02*
1204 | X18225777Y-10776958D01*
1205 | X18225777Y-10776958D02*
1206 | X18235301Y-10796006D01*
1207 | X18235301Y-10796006D02*
1208 | X18235301Y-10853149D01*
1209 | X18235301Y-10853149D02*
1210 | X18225777Y-10872196D01*
1211 | X18225777Y-10872196D02*
1212 | X18216253Y-10881720D01*
1213 | X18216253Y-10881720D02*
1214 | X18197206Y-10891244D01*
1215 | X18197206Y-10891244D02*
1216 | X18168634Y-10891244D01*
1217 | X18349587Y-10891244D02*
1218 | X18330539Y-10881720D01*
1219 | X18330539Y-10881720D02*
1220 | X18321015Y-10862672D01*
1221 | X18321015Y-10862672D02*
1222 | X18321015Y-10691244D01*
1223 | X18501968Y-10881720D02*
1224 | X18482920Y-10891244D01*
1225 | X18482920Y-10891244D02*
1226 | X18444825Y-10891244D01*
1227 | X18444825Y-10891244D02*
1228 | X18425777Y-10881720D01*
1229 | X18425777Y-10881720D02*
1230 | X18416253Y-10862672D01*
1231 | X18416253Y-10862672D02*
1232 | X18416253Y-10786482D01*
1233 | X18416253Y-10786482D02*
1234 | X18425777Y-10767434D01*
1235 | X18425777Y-10767434D02*
1236 | X18444825Y-10757910D01*
1237 | X18444825Y-10757910D02*
1238 | X18482920Y-10757910D01*
1239 | X18482920Y-10757910D02*
1240 | X18501968Y-10767434D01*
1241 | X18501968Y-10767434D02*
1242 | X18511492Y-10786482D01*
1243 | X18511492Y-10786482D02*
1244 | X18511492Y-10805530D01*
1245 | X18511492Y-10805530D02*
1246 | X18416253Y-10824577D01*
1247 | X18587682Y-10881720D02*
1248 | X18606730Y-10891244D01*
1249 | X18606730Y-10891244D02*
1250 | X18644825Y-10891244D01*
1251 | X18644825Y-10891244D02*
1252 | X18663873Y-10881720D01*
1253 | X18663873Y-10881720D02*
1254 | X18673396Y-10862672D01*
1255 | X18673396Y-10862672D02*
1256 | X18673396Y-10853149D01*
1257 | X18673396Y-10853149D02*
1258 | X18663873Y-10834101D01*
1259 | X18663873Y-10834101D02*
1260 | X18644825Y-10824577D01*
1261 | X18644825Y-10824577D02*
1262 | X18616253Y-10824577D01*
1263 | X18616253Y-10824577D02*
1264 | X18597206Y-10815053D01*
1265 | X18597206Y-10815053D02*
1266 | X18587682Y-10796006D01*
1267 | X18587682Y-10796006D02*
1268 | X18587682Y-10786482D01*
1269 | X18587682Y-10786482D02*
1270 | X18597206Y-10767434D01*
1271 | X18597206Y-10767434D02*
1272 | X18616253Y-10757910D01*
1273 | X18616253Y-10757910D02*
1274 | X18644825Y-10757910D01*
1275 | X18644825Y-10757910D02*
1276 | X18663873Y-10767434D01*
1277 | X18740063Y-10967434D02*
1278 | X18749587Y-10957910D01*
1279 | X18749587Y-10957910D02*
1280 | X18768634Y-10929339D01*
1281 | X18768634Y-10929339D02*
1282 | X18778158Y-10910291D01*
1283 | X18778158Y-10910291D02*
1284 | X18787682Y-10881720D01*
1285 | X18787682Y-10881720D02*
1286 | X18797206Y-10834101D01*
1287 | X18797206Y-10834101D02*
1288 | X18797206Y-10796006D01*
1289 | X18797206Y-10796006D02*
1290 | X18787682Y-10748387D01*
1291 | X18787682Y-10748387D02*
1292 | X18778158Y-10719815D01*
1293 | X18778158Y-10719815D02*
1294 | X18768634Y-10700768D01*
1295 | X18768634Y-10700768D02*
1296 | X18749587Y-10672196D01*
1297 | X18749587Y-10672196D02*
1298 | X18740063Y-10662672D01*
1299 | M02*
1300 |
--------------------------------------------------------------------------------
/pcb/generic/fab/try2-PTH.drl:
--------------------------------------------------------------------------------
1 | M48
2 | ; DRILL file {KiCad 7.0.9} date Sun Nov 12 02:22:47 2023
3 | ; FORMAT={-:-/ absolute / inch / decimal}
4 | ; #@! TF.CreationDate,2023-11-12T02:22:47+01:00
5 | ; #@! TF.GenerationSoftware,Kicad,Pcbnew,7.0.9
6 | ; #@! TF.FileFunction,Plated,1,2,PTH
7 | FMAT,2
8 | INCH
9 | ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
10 | T1C0.0360
11 | ; #@! TA.AperFunction,Plated,PTH,ComponentDrill
12 | T2C0.0394
13 | %
14 | G90
15 | G05
16 | T1
17 | X5.725Y-3.42
18 | X5.725Y-3.82
19 | X5.825Y-3.42
20 | X5.825Y-3.82
21 | X5.925Y-3.42
22 | X5.925Y-3.82
23 | T2
24 | X5.625Y-3.42
25 | X5.625Y-3.82
26 | T0
27 | M30
28 |
--------------------------------------------------------------------------------
/pcb/generic/fab/try2-fab.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SKGleba/psp2sdboot/9a9173bc28723fe1de72f6bb5811087be0cd50f1/pcb/generic/fab/try2-fab.zip
--------------------------------------------------------------------------------
/pcb/generic/fab/try2-job.gbrjob:
--------------------------------------------------------------------------------
1 | {
2 | "Header": {
3 | "GenerationSoftware": {
4 | "Vendor": "KiCad",
5 | "Application": "Pcbnew",
6 | "Version": "7.0.9"
7 | },
8 | "CreationDate": "2023-11-12T02:22:26+01:00"
9 | },
10 | "GeneralSpecs": {
11 | "ProjectId": {
12 | "Name": "try2",
13 | "GUID": "74727932-2e6b-4696-9361-645f70636258",
14 | "Revision": "rev?"
15 | },
16 | "Size": {
17 | "X": 14.07,
18 | "Y": 14.07
19 | },
20 | "LayerNumber": 2,
21 | "BoardThickness": 1.6,
22 | "Finish": "None"
23 | },
24 | "DesignRules": [
25 | {
26 | "Layers": "Outer",
27 | "PadToPad": 0.2,
28 | "PadToTrack": 0.2,
29 | "TrackToTrack": 0.2,
30 | "MinLineWidth": 0.4
31 | }
32 | ],
33 | "FilesAttributes": [
34 | {
35 | "Path": "try2-F_Cu.gbr",
36 | "FileFunction": "Copper,L1,Top",
37 | "FilePolarity": "Positive"
38 | },
39 | {
40 | "Path": "try2-B_Cu.gbr",
41 | "FileFunction": "Copper,L2,Bot",
42 | "FilePolarity": "Positive"
43 | },
44 | {
45 | "Path": "try2-F_Paste.gbr",
46 | "FileFunction": "SolderPaste,Top",
47 | "FilePolarity": "Positive"
48 | },
49 | {
50 | "Path": "try2-B_Paste.gbr",
51 | "FileFunction": "SolderPaste,Bot",
52 | "FilePolarity": "Positive"
53 | },
54 | {
55 | "Path": "try2-F_Silkscreen.gbr",
56 | "FileFunction": "Legend,Top",
57 | "FilePolarity": "Positive"
58 | },
59 | {
60 | "Path": "try2-B_Silkscreen.gbr",
61 | "FileFunction": "Legend,Bot",
62 | "FilePolarity": "Positive"
63 | },
64 | {
65 | "Path": "try2-F_Mask.gbr",
66 | "FileFunction": "SolderMask,Top",
67 | "FilePolarity": "Negative"
68 | },
69 | {
70 | "Path": "try2-B_Mask.gbr",
71 | "FileFunction": "SolderMask,Bot",
72 | "FilePolarity": "Negative"
73 | },
74 | {
75 | "Path": "try2-Edge_Cuts.gbr",
76 | "FileFunction": "Profile",
77 | "FilePolarity": "Positive"
78 | }
79 | ],
80 | "MaterialStackup": [
81 | {
82 | "Type": "Legend",
83 | "Name": "Top Silk Screen"
84 | },
85 | {
86 | "Type": "SolderPaste",
87 | "Name": "Top Solder Paste"
88 | },
89 | {
90 | "Type": "SolderMask",
91 | "Name": "Top Solder Mask"
92 | },
93 | {
94 | "Type": "Copper",
95 | "Name": "F.Cu"
96 | },
97 | {
98 | "Type": "Dielectric",
99 | "Material": "FR4",
100 | "Name": "F.Cu/B.Cu",
101 | "Notes": "Type: dielectric layer 1 (from F.Cu to B.Cu)"
102 | },
103 | {
104 | "Type": "Copper",
105 | "Name": "B.Cu"
106 | },
107 | {
108 | "Type": "SolderMask",
109 | "Name": "Bottom Solder Mask"
110 | },
111 | {
112 | "Type": "SolderPaste",
113 | "Name": "Bottom Solder Paste"
114 | },
115 | {
116 | "Type": "Legend",
117 | "Name": "Bottom Silk Screen"
118 | }
119 | ]
120 | }
121 |
--------------------------------------------------------------------------------
/pcb/generic/try2-backups/try2-2023-12-09_155253.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SKGleba/psp2sdboot/9a9173bc28723fe1de72f6bb5811087be0cd50f1/pcb/generic/try2-backups/try2-2023-12-09_155253.zip
--------------------------------------------------------------------------------
/pcb/generic/try2.kicad_pcb:
--------------------------------------------------------------------------------
1 | (kicad_pcb (version 20221018) (generator pcbnew)
2 |
3 | (general
4 | (thickness 1.6)
5 | )
6 |
7 | (paper "A4")
8 | (layers
9 | (0 "F.Cu" signal)
10 | (31 "B.Cu" signal)
11 | (32 "B.Adhes" user "B.Adhesive")
12 | (33 "F.Adhes" user "F.Adhesive")
13 | (34 "B.Paste" user)
14 | (35 "F.Paste" user)
15 | (36 "B.SilkS" user "B.Silkscreen")
16 | (37 "F.SilkS" user "F.Silkscreen")
17 | (38 "B.Mask" user)
18 | (39 "F.Mask" user)
19 | (40 "Dwgs.User" user "User.Drawings")
20 | (41 "Cmts.User" user "User.Comments")
21 | (42 "Eco1.User" user "User.Eco1")
22 | (43 "Eco2.User" user "User.Eco2")
23 | (44 "Edge.Cuts" user)
24 | (45 "Margin" user)
25 | (46 "B.CrtYd" user "B.Courtyard")
26 | (47 "F.CrtYd" user "F.Courtyard")
27 | (48 "B.Fab" user)
28 | (49 "F.Fab" user)
29 | (50 "User.1" user)
30 | (51 "User.2" user)
31 | (52 "User.3" user)
32 | (53 "User.4" user)
33 | (54 "User.5" user)
34 | (55 "User.6" user)
35 | (56 "User.7" user)
36 | (57 "User.8" user)
37 | (58 "User.9" user)
38 | )
39 |
40 | (setup
41 | (pad_to_mask_clearance 0)
42 | (pcbplotparams
43 | (layerselection 0x00010fc_ffffffff)
44 | (plot_on_all_layers_selection 0x0000000_00000000)
45 | (disableapertmacros false)
46 | (usegerberextensions false)
47 | (usegerberattributes true)
48 | (usegerberadvancedattributes true)
49 | (creategerberjobfile true)
50 | (dashed_line_dash_ratio 12.000000)
51 | (dashed_line_gap_ratio 3.000000)
52 | (svgprecision 4)
53 | (plotframeref false)
54 | (viasonmask false)
55 | (mode 1)
56 | (useauxorigin false)
57 | (hpglpennumber 1)
58 | (hpglpenspeed 20)
59 | (hpglpendiameter 15.000000)
60 | (dxfpolygonmode true)
61 | (dxfimperialunits true)
62 | (dxfusepcbnewfont true)
63 | (psnegative false)
64 | (psa4output false)
65 | (plotreference true)
66 | (plotvalue true)
67 | (plotinvisibletext false)
68 | (sketchpadsonfab false)
69 | (subtractmaskfromsilk false)
70 | (outputformat 1)
71 | (mirror false)
72 | (drillshape 0)
73 | (scaleselection 1)
74 | (outputdirectory "fab/")
75 | )
76 | )
77 |
78 | (net 0 "")
79 | (net 1 "Net-(J1-Pin_1)")
80 | (net 2 "Net-(J2-Pin_1)")
81 | (net 3 "Net-(J3-Pin_1)")
82 | (net 4 "Net-(J3-Pin_2)")
83 | (net 5 "Net-(J4-Pin_1)")
84 | (net 6 "Net-(J4-Pin_2)")
85 | (net 7 "Net-(J4-Pin_3)")
86 | (net 8 "Net-(J4-Pin_4)")
87 |
88 | (footprint "Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical" (layer "F.Cu")
89 | (tstamp 09050aa3-0aaf-4dc7-b022-cfce1c7cf68d)
90 | (at 142.875 86.868 90)
91 | (descr "Through hole straight pin header, 1x04, 2.54mm pitch, single row")
92 | (tags "Through hole pin header THT 1x04 2.54mm single row")
93 | (property "Sheetfile" "try2.kicad_sch")
94 | (property "Sheetname" "")
95 | (property "ki_description" "Generic connector, single row, 01x04, script generated")
96 | (property "ki_keywords" "connector")
97 | (path "/efb629ea-c2d5-4ca7-9d69-e34aa4565f87")
98 | (attr through_hole)
99 | (fp_text reference "J3" (at 0 -2.33 90) (layer "F.SilkS") hide
100 | (effects (font (size 1 1) (thickness 0.15)))
101 | (tstamp acbae287-e602-4028-a975-1f126192e087)
102 | )
103 | (fp_text value "Conn_01x04_Pin" (at 0 9.95 90) (layer "F.Fab")
104 | (effects (font (size 1 1) (thickness 0.15)))
105 | (tstamp 60b75195-07f8-479a-b570-ea31b52de535)
106 | )
107 | (fp_text user "${REFERENCE}" (at 0 3.81) (layer "F.Fab")
108 | (effects (font (size 1 1) (thickness 0.15)))
109 | (tstamp 3b1e547e-c802-404d-a560-e819562904e4)
110 | )
111 | (fp_line (start -1.33 -1.33) (end 0 -1.33)
112 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 51d04e9c-2759-4ae0-b329-f96f85b714b0))
113 | (fp_line (start -1.33 0) (end -1.33 -1.33)
114 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 0cd52b10-da68-49f7-9ba0-61090b4742fb))
115 | (fp_line (start -1.33 1.27) (end -1.33 8.95)
116 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 5ffafcbd-902d-4866-9971-06c5154edf21))
117 | (fp_line (start -1.33 1.27) (end 1.33 1.27)
118 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 016ac7a0-082a-4e63-b5da-d0ce19071963))
119 | (fp_line (start -1.33 8.95) (end 1.33 8.95)
120 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 4ac2f7b8-595e-42c3-af78-fc199c578393))
121 | (fp_line (start 1.33 1.27) (end 1.33 8.95)
122 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 305bc947-ab75-4654-b18e-fcd868f5069f))
123 | (fp_line (start -1.8 -1.8) (end -1.8 9.4)
124 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 6ba85121-2bba-47b3-8e19-4375ccae6adb))
125 | (fp_line (start -1.8 9.4) (end 1.8 9.4)
126 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 1e6259ad-dbd0-4613-bdfc-982aff619d34))
127 | (fp_line (start 1.8 -1.8) (end -1.8 -1.8)
128 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 2335c5d9-a5c4-4c55-8021-3fa617460205))
129 | (fp_line (start 1.8 9.4) (end 1.8 -1.8)
130 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 533def51-64d4-477b-9904-d1fe5eed3ed9))
131 | (fp_line (start -1.27 -0.635) (end -0.635 -1.27)
132 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp d0bf3acd-9884-4364-abc7-9e33a7b83b10))
133 | (fp_line (start -1.27 8.89) (end -1.27 -0.635)
134 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 36c889b2-de15-4e35-99c9-7a78a5cf326b))
135 | (fp_line (start -0.635 -1.27) (end 1.27 -1.27)
136 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp ef60aa5c-aa51-42f1-a63a-280e0d815a43))
137 | (fp_line (start 1.27 -1.27) (end 1.27 8.89)
138 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp a7beb420-574e-4335-9bcf-3d81cb0d01de))
139 | (fp_line (start 1.27 8.89) (end -1.27 8.89)
140 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp b62aeee3-1746-4ea2-826f-5e3cd10841c8))
141 | (pad "1" thru_hole rect (at 0 0 90) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask")
142 | (net 3 "Net-(J3-Pin_1)") (pinfunction "Pin_1") (pintype "passive") (tstamp 992e1457-2c14-4765-8cc9-b78536bbf1d3))
143 | (pad "2" thru_hole circle (at 0 2.54 90) (size 1.7 1.7) (drill 0.914) (layers "*.Cu" "*.Paste" "*.Mask")
144 | (net 4 "Net-(J3-Pin_2)") (pinfunction "Pin_2") (pintype "passive") (tstamp bac9caf1-e0e8-45b5-ae63-d515c80df869))
145 | (pad "3" thru_hole circle (at 0 5.08 90) (size 1.7 1.7) (drill 0.914) (layers "*.Cu" "*.Paste" "*.Mask")
146 | (net 2 "Net-(J2-Pin_1)") (pinfunction "Pin_3") (pintype "passive") (tstamp 42a04760-b69a-4c6e-9732-f0434132cc4b))
147 | (pad "4" thru_hole circle (at 0 7.62 90) (size 1.7 1.7) (drill 0.914) (layers "*.Cu" "*.Paste" "*.Mask")
148 | (net 1 "Net-(J1-Pin_1)") (pinfunction "Pin_4") (pintype "passive") (tstamp c3345e57-72e0-4401-af2f-c6b18b54e572))
149 | (model "${KICAD6_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x04_P2.54mm_Vertical.wrl"
150 | (offset (xyz 0 0 0))
151 | (scale (xyz 1 1 1))
152 | (rotate (xyz 0 0 0))
153 | )
154 | )
155 |
156 | (footprint "Connector_Wire:SolderWirePad_1x01_SMD_1x2mm" (layer "F.Cu")
157 | (tstamp 1607e7df-5303-40b7-a3bb-971f1e894e1c)
158 | (at 140.97 91.948 -90)
159 | (descr "Wire Pad, Square, SMD Pad, 1mm x 2mm,")
160 | (tags "MesurementPoint Square SMDPad 1mmx2mm ")
161 | (property "Sheetfile" "try2.kicad_sch")
162 | (property "Sheetname" "")
163 | (property "ki_description" "Generic connector, single row, 01x01, script generated (kicad-library-utils/schlib/autogen/connector/)")
164 | (property "ki_keywords" "connector")
165 | (path "/f8779e91-8298-48b9-97e5-ba4d76968197")
166 | (attr exclude_from_pos_files)
167 | (fp_text reference "J5" (at 0 -2.54 90) (layer "F.SilkS") hide
168 | (effects (font (size 1 1) (thickness 0.15)))
169 | (tstamp a4bba3aa-a7ae-412d-b2a2-633051d57125)
170 | )
171 | (fp_text value "GPIO" (at 0 2.54 90) (layer "F.Fab")
172 | (effects (font (size 1 1) (thickness 0.15)))
173 | (tstamp 439127b4-013e-46b7-8491-a500792b24f2)
174 | )
175 | (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab")
176 | (effects (font (size 1 1) (thickness 0.15)))
177 | (tstamp 11605b3e-9558-4540-b2b9-50498da5d452)
178 | )
179 | (fp_line (start -0.63 -1.27) (end -0.63 1.27)
180 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 9ce772e2-eac9-4bf8-aa27-4f4a328c72fc))
181 | (fp_line (start -0.63 1.27) (end 0.63 1.27)
182 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp b5e62e18-8ddd-48ec-8c64-60772a905547))
183 | (fp_line (start 0.63 -1.27) (end -0.63 -1.27)
184 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 02967d4a-277c-473f-9677-0d843112745c))
185 | (fp_line (start 0.63 1.27) (end 0.63 -1.27)
186 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 96c64f2d-ef10-43cf-a565-e9e47c8e30cc))
187 | (fp_line (start -0.63 -1.27) (end 0.63 -1.27)
188 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 6e0c105d-ae6a-49e8-a180-37484e708309))
189 | (fp_line (start -0.63 1.27) (end -0.63 -1.27)
190 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 33b04564-bc87-48d7-9fd9-7ac34a5636b4))
191 | (fp_line (start 0.63 -1.27) (end 0.63 1.27)
192 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 8eb7aa62-a74e-45cb-9100-5f82803c2dfe))
193 | (fp_line (start 0.63 1.27) (end -0.63 1.27)
194 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 68f5523c-2053-4d07-9ede-59375ce9cbe7))
195 | (pad "1" smd roundrect (at 0 0 270) (size 1 2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
196 | (net 6 "Net-(J4-Pin_2)") (pinfunction "Pin_1") (pintype "passive") (tstamp 6348728b-ec5c-461d-ba49-6c06f4ef5002))
197 | )
198 |
199 | (footprint "Connector_Wire:SolderWirePad_1x01_SMD_1x2mm" (layer "F.Cu")
200 | (tstamp 273a751b-10e3-4589-8ba0-867832d548ba)
201 | (at 140.97 94.488 -90)
202 | (descr "Wire Pad, Square, SMD Pad, 1mm x 2mm,")
203 | (tags "MesurementPoint Square SMDPad 1mmx2mm ")
204 | (property "Sheetfile" "try2.kicad_sch")
205 | (property "Sheetname" "")
206 | (property "ki_description" "Generic connector, single row, 01x01, script generated (kicad-library-utils/schlib/autogen/connector/)")
207 | (property "ki_keywords" "connector")
208 | (path "/4047d465-2b2f-4d63-9bad-1368ef3a0534")
209 | (attr exclude_from_pos_files)
210 | (fp_text reference "J6" (at 0 -2.54 90) (layer "F.SilkS") hide
211 | (effects (font (size 1 1) (thickness 0.15)))
212 | (tstamp 0521cac1-1787-4fb9-ad11-07aaf43e14c0)
213 | )
214 | (fp_text value "DAT0" (at 0 2.54 90) (layer "F.Fab")
215 | (effects (font (size 1 1) (thickness 0.15)))
216 | (tstamp b41e656b-c467-4ad6-8ceb-306e45b3a48e)
217 | )
218 | (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab")
219 | (effects (font (size 1 1) (thickness 0.15)))
220 | (tstamp 18155d4f-1aaa-4f7b-a61c-4806b4a6ff00)
221 | )
222 | (fp_line (start -0.63 -1.27) (end -0.63 1.27)
223 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp d24af99f-bf06-4e1e-a597-61d4b472f14a))
224 | (fp_line (start -0.63 1.27) (end 0.63 1.27)
225 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 51a9c674-bfc1-44e6-b2b0-9d4c6772436d))
226 | (fp_line (start 0.63 -1.27) (end -0.63 -1.27)
227 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 4d1ac66d-dc0d-436a-b8c1-788349a97a3b))
228 | (fp_line (start 0.63 1.27) (end 0.63 -1.27)
229 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 97acd5d3-3c8d-4444-b1b3-9faa55066dfb))
230 | (fp_line (start -0.63 -1.27) (end 0.63 -1.27)
231 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp d201e973-6d21-4cf5-bcbd-8e44e6f09d82))
232 | (fp_line (start -0.63 1.27) (end -0.63 -1.27)
233 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp c2d94a08-3d20-4b19-8c40-1d72a95e2708))
234 | (fp_line (start 0.63 -1.27) (end 0.63 1.27)
235 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 409daa1e-c664-46b4-86e0-a2f64a2ea430))
236 | (fp_line (start 0.63 1.27) (end -0.63 1.27)
237 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp abcaa987-2438-4d4b-9e70-1a7dd3d18b1d))
238 | (pad "1" smd roundrect (at 0 0 270) (size 1 2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
239 | (net 5 "Net-(J4-Pin_1)") (pinfunction "Pin_1") (pintype "passive") (tstamp ed80daf4-fa16-440d-9654-ecf146dde3cb))
240 | )
241 |
242 | (footprint "Connector_Wire:SolderWirePad_1x01_SMD_1x2mm" (layer "F.Cu")
243 | (tstamp 5c40201a-1888-4f9d-a22f-1438b0d1a7f2)
244 | (at 152.4 91.948 -90)
245 | (descr "Wire Pad, Square, SMD Pad, 1mm x 2mm,")
246 | (tags "MesurementPoint Square SMDPad 1mmx2mm ")
247 | (property "Sheetfile" "try2.kicad_sch")
248 | (property "Sheetname" "")
249 | (property "ki_description" "Generic connector, single row, 01x01, script generated (kicad-library-utils/schlib/autogen/connector/)")
250 | (property "ki_keywords" "connector")
251 | (path "/847985e0-629b-495c-ba36-4f389455f731")
252 | (attr exclude_from_pos_files)
253 | (fp_text reference "J2" (at 0 -2.54 90) (layer "F.SilkS") hide
254 | (effects (font (size 1 1) (thickness 0.15)))
255 | (tstamp f2f69486-4ee2-43bd-ac55-19764fefbf5b)
256 | )
257 | (fp_text value "VDD" (at 0 2.54 90) (layer "F.Fab")
258 | (effects (font (size 1 1) (thickness 0.15)))
259 | (tstamp f738c7eb-c336-4e69-b479-c95839cf3a40)
260 | )
261 | (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab")
262 | (effects (font (size 1 1) (thickness 0.15)))
263 | (tstamp 47021850-6f2e-4649-97c6-e7ee31f9594f)
264 | )
265 | (fp_line (start -0.63 -1.27) (end -0.63 1.27)
266 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 3632c281-f9db-4007-815b-d03b7b42a380))
267 | (fp_line (start -0.63 1.27) (end 0.63 1.27)
268 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 3199742e-5a49-4347-8887-5fd58a25703a))
269 | (fp_line (start 0.63 -1.27) (end -0.63 -1.27)
270 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 94d16467-0d9a-48d8-928c-67003bd9e028))
271 | (fp_line (start 0.63 1.27) (end 0.63 -1.27)
272 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 5e4151e1-e2de-4670-8da6-cd01574cb876))
273 | (fp_line (start -0.63 -1.27) (end 0.63 -1.27)
274 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 5053f459-1fd9-4535-af8d-daa6b5ab7ccd))
275 | (fp_line (start -0.63 1.27) (end -0.63 -1.27)
276 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp da2ce741-62d2-4332-af03-0f2ecc03a27a))
277 | (fp_line (start 0.63 -1.27) (end 0.63 1.27)
278 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 8c096d62-9093-4862-a91f-2af2f130be0f))
279 | (fp_line (start 0.63 1.27) (end -0.63 1.27)
280 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 5d98906f-7d35-431f-b0e5-4ac42fa20ce3))
281 | (pad "1" smd roundrect (at 0 0 270) (size 1 2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
282 | (net 2 "Net-(J2-Pin_1)") (pinfunction "Pin_1") (pintype "passive") (tstamp cb37ec10-dcb1-4a77-ba36-92e742436c6b))
283 | )
284 |
285 | (footprint "Package_TO_SOT_SMD:SOT-23" (layer "F.Cu")
286 | (tstamp 5ceda15d-0c41-4924-a4e1-992312bc988d)
287 | (at 144.4475 91.948 180)
288 | (descr "SOT, 3 Pin (https://www.jedec.org/system/files/docs/to-236h.pdf variant AB), generated with kicad-footprint-generator ipc_gullwing_generator.py")
289 | (tags "SOT TO_SOT_SMD")
290 | (property "Sheetfile" "try2.kicad_sch")
291 | (property "Sheetname" "")
292 | (property "ki_description" "0.5A Id, 60V Vds, N-Channel MOSFET, SOT-23")
293 | (property "ki_keywords" "N-Channel MOSFET")
294 | (path "/4bfed1c7-fad3-48bd-a249-29e1b1653195")
295 | (attr smd)
296 | (fp_text reference "Q2" (at 0 -2.4) (layer "F.SilkS") hide
297 | (effects (font (size 1 1) (thickness 0.15)))
298 | (tstamp 99cd3e89-a01e-4445-9d25-96f73684adc2)
299 | )
300 | (fp_text value "MMBF170" (at 0 2.4) (layer "F.Fab")
301 | (effects (font (size 1 1) (thickness 0.15)))
302 | (tstamp 7bd50401-390b-4073-b76b-02004926aaa2)
303 | )
304 | (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab")
305 | (effects (font (size 0.32 0.32) (thickness 0.05)))
306 | (tstamp a4b6fd4c-eb4f-4866-aaa0-dd13fa844a4f)
307 | )
308 | (fp_line (start 0 -1.56) (end -1.675 -1.56)
309 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp dc8aaffa-ea0f-436d-8b4c-7e2d0291d116))
310 | (fp_line (start 0 -1.56) (end 0.65 -1.56)
311 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp ce9ade72-3fab-45e5-892b-1af457706a75))
312 | (fp_line (start 0 1.56) (end -0.65 1.56)
313 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp ac21a0eb-e223-4e6c-b52d-8b524af68395))
314 | (fp_line (start 0 1.56) (end 0.65 1.56)
315 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 292ecf3d-c125-4b6d-9792-cf0496db2db8))
316 | (fp_line (start -1.92 -1.7) (end -1.92 1.7)
317 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 10b58ae4-f1cf-4714-9184-a795ebe1e9b0))
318 | (fp_line (start -1.92 1.7) (end 1.92 1.7)
319 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp c2194a29-a442-416f-9e58-9ba8e2e3ec8f))
320 | (fp_line (start 1.92 -1.7) (end -1.92 -1.7)
321 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 67312db6-c6fe-4066-aa77-8a1bd8273207))
322 | (fp_line (start 1.92 1.7) (end 1.92 -1.7)
323 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp c5124a10-4def-4933-bfdd-959a44717949))
324 | (fp_line (start -0.65 -1.125) (end -0.325 -1.45)
325 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 9dbd2d58-2461-4081-9a20-5cc88541222b))
326 | (fp_line (start -0.65 1.45) (end -0.65 -1.125)
327 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 89dd063c-d88a-4815-96af-a5f5b96b05df))
328 | (fp_line (start -0.325 -1.45) (end 0.65 -1.45)
329 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 1327ea74-5a1d-42d6-ab8e-7d1e806df7e7))
330 | (fp_line (start 0.65 -1.45) (end 0.65 1.45)
331 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 0d331d87-126a-4bd9-ace8-67c326b3ddb7))
332 | (fp_line (start 0.65 1.45) (end -0.65 1.45)
333 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 531bc3fc-ec46-462b-920e-6ceef8b18820))
334 | (pad "1" smd roundrect (at -0.9375 -0.95 180) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
335 | (net 7 "Net-(J4-Pin_3)") (pinfunction "G") (pintype "input") (tstamp eaa6e058-390c-45a7-95b0-73be61296f87))
336 | (pad "2" smd roundrect (at -0.9375 0.95 180) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
337 | (net 8 "Net-(J4-Pin_4)") (pinfunction "S") (pintype "passive") (tstamp 0fcd96d5-f91a-44c2-bcf7-b1138caaf14b))
338 | (pad "3" smd roundrect (at 0.9375 0 180) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
339 | (net 6 "Net-(J4-Pin_2)") (pinfunction "D") (pintype "passive") (tstamp 3bf9e067-2b54-4859-b60e-9dbde46ea447))
340 | (model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.wrl"
341 | (offset (xyz 0 0 0))
342 | (scale (xyz 1 1 1))
343 | (rotate (xyz 0 0 0))
344 | )
345 | )
346 |
347 | (footprint "Package_TO_SOT_SMD:SOT-23" (layer "F.Cu")
348 | (tstamp 666bb13c-e910-48a9-938a-67570a02b984)
349 | (at 148.9225 91.948)
350 | (descr "SOT, 3 Pin (https://www.jedec.org/system/files/docs/to-236h.pdf variant AB), generated with kicad-footprint-generator ipc_gullwing_generator.py")
351 | (tags "SOT TO_SOT_SMD")
352 | (property "Sheetfile" "try2.kicad_sch")
353 | (property "Sheetname" "")
354 | (property "ki_description" "0.5A Id, 60V Vds, N-Channel MOSFET, SOT-23")
355 | (property "ki_keywords" "N-Channel MOSFET")
356 | (path "/549437d3-6439-4a45-9108-3ccadafdbdf6")
357 | (attr smd)
358 | (fp_text reference "Q1" (at 0 -2.4) (layer "F.SilkS") hide
359 | (effects (font (size 1 1) (thickness 0.15)))
360 | (tstamp 6966557e-0cee-44d5-8507-a7ce59e8626d)
361 | )
362 | (fp_text value "MMBF170" (at 0 2.4) (layer "F.Fab")
363 | (effects (font (size 1 1) (thickness 0.15)))
364 | (tstamp 86cf8261-e9d2-41f0-a800-6af0102153d9)
365 | )
366 | (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab")
367 | (effects (font (size 0.32 0.32) (thickness 0.05)))
368 | (tstamp 34759ad9-56ed-44d6-96e0-395b1239d70e)
369 | )
370 | (fp_line (start 0 -1.56) (end -1.675 -1.56)
371 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 6c076c30-2aa4-4d50-9894-a2c90a1ab097))
372 | (fp_line (start 0 -1.56) (end 0.65 -1.56)
373 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp ea0d7f2f-1d9a-48bf-903c-56062b7b1489))
374 | (fp_line (start 0 1.56) (end -0.65 1.56)
375 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 31c76430-1a29-450f-bef5-10541c173d88))
376 | (fp_line (start 0 1.56) (end 0.65 1.56)
377 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp c6c2bc55-1201-4dfe-8131-8c2538d35942))
378 | (fp_line (start -1.92 -1.7) (end -1.92 1.7)
379 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 9244a4c0-235c-4d68-91c8-02eaa3e7665e))
380 | (fp_line (start -1.92 1.7) (end 1.92 1.7)
381 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 531279b9-f938-4da5-b491-79db89bbc09c))
382 | (fp_line (start 1.92 -1.7) (end -1.92 -1.7)
383 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp bdd02a9f-ef67-4fd1-b475-bbcac282351d))
384 | (fp_line (start 1.92 1.7) (end 1.92 -1.7)
385 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 420d46d3-3be8-4f28-a711-a6b41fcf9eb0))
386 | (fp_line (start -0.65 -1.125) (end -0.325 -1.45)
387 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 6e9af7d4-b28a-4699-a1ac-29c2782d2d9d))
388 | (fp_line (start -0.65 1.45) (end -0.65 -1.125)
389 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp b9205b87-f0f7-4676-8a26-c633c70fbcb7))
390 | (fp_line (start -0.325 -1.45) (end 0.65 -1.45)
391 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp f7d487d9-4d5d-46f3-b99c-59b268a70065))
392 | (fp_line (start 0.65 -1.45) (end 0.65 1.45)
393 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 40bfecd9-92a5-4aaf-8ad4-03db140a791c))
394 | (fp_line (start 0.65 1.45) (end -0.65 1.45)
395 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 9279e762-3923-434d-aeed-7ee60b400867))
396 | (pad "1" smd roundrect (at -0.9375 -0.95) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
397 | (net 4 "Net-(J3-Pin_2)") (pinfunction "G") (pintype "input") (tstamp fd6164a7-b1ce-4d27-82ba-77ca138a9504))
398 | (pad "2" smd roundrect (at -0.9375 0.95) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
399 | (net 8 "Net-(J4-Pin_4)") (pinfunction "S") (pintype "passive") (tstamp a1d53766-c52d-40fd-8ee7-523d43d45a6d))
400 | (pad "3" smd roundrect (at 0.9375 0) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
401 | (net 2 "Net-(J2-Pin_1)") (pinfunction "D") (pintype "passive") (tstamp 7230f8e8-ca55-445a-93fb-67d9dfd2a238))
402 | (model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.wrl"
403 | (offset (xyz 0 0 0))
404 | (scale (xyz 1 1 1))
405 | (rotate (xyz 0 0 0))
406 | )
407 | )
408 |
409 | (footprint "Connector_Wire:SolderWirePad_1x01_SMD_1x2mm" (layer "F.Cu")
410 | (tstamp 7832caa2-b055-48a2-9c5d-0c4da701f757)
411 | (at 140.97 89.408 -90)
412 | (descr "Wire Pad, Square, SMD Pad, 1mm x 2mm,")
413 | (tags "MesurementPoint Square SMDPad 1mmx2mm ")
414 | (property "Sheetfile" "try2.kicad_sch")
415 | (property "Sheetname" "")
416 | (property "ki_description" "Generic connector, single row, 01x01, script generated (kicad-library-utils/schlib/autogen/connector/)")
417 | (property "ki_keywords" "connector")
418 | (path "/84e7a978-af81-451b-b3f4-fe8edf835fcd")
419 | (attr exclude_from_pos_files)
420 | (fp_text reference "J8" (at 0 -2.54 90) (layer "F.SilkS") hide
421 | (effects (font (size 1 1) (thickness 0.15)))
422 | (tstamp aab3d42f-1dad-425e-a393-cbd1abc9beab)
423 | )
424 | (fp_text value "RST" (at 0 2.54 90) (layer "F.Fab")
425 | (effects (font (size 1 1) (thickness 0.15)))
426 | (tstamp 7dca2e11-a1a6-4d96-8181-286079c37195)
427 | )
428 | (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab")
429 | (effects (font (size 1 1) (thickness 0.15)))
430 | (tstamp abae8110-929c-4346-9c39-e87818ecb9b3)
431 | )
432 | (fp_line (start -0.63 -1.27) (end -0.63 1.27)
433 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 40197f7e-b2b9-47f0-bf91-6f3b91dbe061))
434 | (fp_line (start -0.63 1.27) (end 0.63 1.27)
435 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 505eb5b4-7b25-4897-9997-5420570f4aaa))
436 | (fp_line (start 0.63 -1.27) (end -0.63 -1.27)
437 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp deed0a2d-1ebd-4b46-b4fd-57981f35b5c4))
438 | (fp_line (start 0.63 1.27) (end 0.63 -1.27)
439 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp db488b20-dd61-4110-a5dd-19b5ebfa1407))
440 | (fp_line (start -0.63 -1.27) (end 0.63 -1.27)
441 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 39b7ce56-3d89-4f50-9bfb-6ecfc20c822a))
442 | (fp_line (start -0.63 1.27) (end -0.63 -1.27)
443 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 6afa1049-41ef-49df-9d87-7e3bb131ec37))
444 | (fp_line (start 0.63 -1.27) (end 0.63 1.27)
445 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 765ad25d-0145-4d92-a391-c0fccdc92fe0))
446 | (fp_line (start 0.63 1.27) (end -0.63 1.27)
447 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 72b6be0d-81c9-488a-ba53-992a26b31a39))
448 | (pad "1" smd roundrect (at 0 0 270) (size 1 2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
449 | (net 3 "Net-(J3-Pin_1)") (pinfunction "Pin_1") (pintype "passive") (tstamp 1b9edaf7-9d7b-4342-b309-c4c5114f6774))
450 | )
451 |
452 | (footprint "Connector_Wire:SolderWirePad_1x01_SMD_1x2mm" (layer "F.Cu")
453 | (tstamp ca8f44d2-e5ac-47ec-9f94-474a1d80fa1d)
454 | (at 152.4 89.408 -90)
455 | (descr "Wire Pad, Square, SMD Pad, 1mm x 2mm,")
456 | (tags "MesurementPoint Square SMDPad 1mmx2mm ")
457 | (property "Sheetfile" "try2.kicad_sch")
458 | (property "Sheetname" "")
459 | (property "ki_description" "Generic connector, single row, 01x01, script generated (kicad-library-utils/schlib/autogen/connector/)")
460 | (property "ki_keywords" "connector")
461 | (path "/4a5746ae-3018-4f3a-bedb-3632ed6d8921")
462 | (attr exclude_from_pos_files)
463 | (fp_text reference "J1" (at 0 -2.54 90) (layer "F.SilkS") hide
464 | (effects (font (size 1 1) (thickness 0.15)))
465 | (tstamp 98ee96d5-ac96-4efc-996e-a684d91bb0a1)
466 | )
467 | (fp_text value "PWR" (at 0 2.54 90) (layer "F.Fab")
468 | (effects (font (size 1 1) (thickness 0.15)))
469 | (tstamp 33ad0a94-8779-410b-9082-b05c80126a12)
470 | )
471 | (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab")
472 | (effects (font (size 1 1) (thickness 0.15)))
473 | (tstamp e7036f7c-ff3b-44e9-9e23-c4b84d8f5ba9)
474 | )
475 | (fp_line (start -0.63 -1.27) (end -0.63 1.27)
476 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp ea3a8894-136d-4d13-80f3-00405a816d89))
477 | (fp_line (start -0.63 1.27) (end 0.63 1.27)
478 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 6d8322eb-fd2a-49a9-8699-8f339c726681))
479 | (fp_line (start 0.63 -1.27) (end -0.63 -1.27)
480 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 258aca6f-65d4-4f45-9ada-18eb0e834187))
481 | (fp_line (start 0.63 1.27) (end 0.63 -1.27)
482 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 41eeede3-8b92-4391-8c29-68db61ca33c4))
483 | (fp_line (start -0.63 -1.27) (end 0.63 -1.27)
484 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp ced26ec9-5170-4419-a8ae-be75127f9df7))
485 | (fp_line (start -0.63 1.27) (end -0.63 -1.27)
486 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp d66c49c6-f910-487b-9f33-9acdc49cc9c4))
487 | (fp_line (start 0.63 -1.27) (end 0.63 1.27)
488 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 59809ce5-6d4e-4859-a942-93504c421bcc))
489 | (fp_line (start 0.63 1.27) (end -0.63 1.27)
490 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 2c7b59e0-ff74-4c93-bfc0-d7d7ac167c89))
491 | (pad "1" smd roundrect (at 0 0 270) (size 1 2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
492 | (net 1 "Net-(J1-Pin_1)") (pinfunction "Pin_1") (pintype "passive") (tstamp b26a58c2-6f71-40c3-8664-c0e94bc4e887))
493 | )
494 |
495 | (footprint "Connector_Wire:SolderWirePad_1x01_SMD_1x2mm" (layer "F.Cu")
496 | (tstamp d6c4ff67-5808-4fa6-a167-d02a72f137c0)
497 | (at 152.4 94.488 -90)
498 | (descr "Wire Pad, Square, SMD Pad, 1mm x 2mm,")
499 | (tags "MesurementPoint Square SMDPad 1mmx2mm ")
500 | (property "Sheetfile" "try2.kicad_sch")
501 | (property "Sheetname" "")
502 | (property "ki_description" "Generic connector, single row, 01x01, script generated (kicad-library-utils/schlib/autogen/connector/)")
503 | (property "ki_keywords" "connector")
504 | (path "/1a76b9fd-9497-49fa-a0aa-e2b3a374cbf5")
505 | (attr exclude_from_pos_files)
506 | (fp_text reference "J7" (at 0 -2.54 90) (layer "F.SilkS") hide
507 | (effects (font (size 1 1) (thickness 0.15)))
508 | (tstamp 8c2f5a73-4f73-42db-ba3c-f5751e7e3696)
509 | )
510 | (fp_text value "GND" (at 0 2.54 90) (layer "F.Fab")
511 | (effects (font (size 1 1) (thickness 0.15)))
512 | (tstamp dce82e71-4e5b-4e6e-ba03-705c5449d465)
513 | )
514 | (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab")
515 | (effects (font (size 1 1) (thickness 0.15)))
516 | (tstamp e258192c-b4bb-45e0-95dd-7021db438aab)
517 | )
518 | (fp_line (start -0.63 -1.27) (end -0.63 1.27)
519 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 9b4762c7-4a2c-4d57-b9ac-68452ba88e6b))
520 | (fp_line (start -0.63 1.27) (end 0.63 1.27)
521 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 5919f41d-c424-4c3a-8d19-933cb438f9b9))
522 | (fp_line (start 0.63 -1.27) (end -0.63 -1.27)
523 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 0a9695de-11a9-40ef-be96-bb94ae9985f0))
524 | (fp_line (start 0.63 1.27) (end 0.63 -1.27)
525 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 62a20a0f-a615-4c5b-bc52-9ecb3db3dbb6))
526 | (fp_line (start -0.63 -1.27) (end 0.63 -1.27)
527 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 73310af3-d143-4611-9045-62141fec83b5))
528 | (fp_line (start -0.63 1.27) (end -0.63 -1.27)
529 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 115c70da-b513-4f73-80ea-8cd77a62e7ae))
530 | (fp_line (start 0.63 -1.27) (end 0.63 1.27)
531 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp eb4731ed-d52e-4a57-9726-d6a1dc6ed667))
532 | (fp_line (start 0.63 1.27) (end -0.63 1.27)
533 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 95338538-3c70-4ff5-b46f-1f006972ee8c))
534 | (pad "1" smd roundrect (at 0 0 270) (size 1 2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
535 | (net 8 "Net-(J4-Pin_4)") (pinfunction "Pin_1") (pintype "passive") (tstamp 34e9a470-c6a0-4322-a994-06d6344df7b7))
536 | )
537 |
538 | (footprint "Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical" (layer "F.Cu")
539 | (tstamp f46e620f-5780-4611-9e64-5e266c6a3f29)
540 | (at 142.875 97.028 90)
541 | (descr "Through hole straight pin header, 1x04, 2.54mm pitch, single row")
542 | (tags "Through hole pin header THT 1x04 2.54mm single row")
543 | (property "Sheetfile" "try2.kicad_sch")
544 | (property "Sheetname" "")
545 | (property "ki_description" "Generic connector, single row, 01x04, script generated")
546 | (property "ki_keywords" "connector")
547 | (path "/b20c4221-ef52-4706-bbaa-bf51894424ec")
548 | (attr through_hole)
549 | (fp_text reference "J4" (at 0 -2.33 90) (layer "F.SilkS") hide
550 | (effects (font (size 1 1) (thickness 0.15)))
551 | (tstamp 2da01a77-f34d-4cd4-a7b6-bbeba84be65f)
552 | )
553 | (fp_text value "Conn_01x04_Pin" (at 0 9.95 90) (layer "F.Fab")
554 | (effects (font (size 1 1) (thickness 0.15)))
555 | (tstamp a9f4b806-474a-4c9c-9655-3c0acc00304b)
556 | )
557 | (fp_text user "${REFERENCE}" (at 0 3.81) (layer "F.Fab")
558 | (effects (font (size 1 1) (thickness 0.15)))
559 | (tstamp c1dc1b22-2339-4f68-950c-b99d80f5f7e6)
560 | )
561 | (fp_line (start -1.33 -1.33) (end 0 -1.33)
562 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 907e059a-638e-425a-aa9d-1e1f2ca65728))
563 | (fp_line (start -1.33 0) (end -1.33 -1.33)
564 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 55f4bbee-47cb-4f83-9882-603b03e96273))
565 | (fp_line (start -1.33 1.27) (end -1.33 8.95)
566 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 6fb72e56-ffc3-4fd8-b6ac-ffebc930ad15))
567 | (fp_line (start -1.33 1.27) (end 1.33 1.27)
568 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 4e23b76b-004c-4081-b675-7c49abc06512))
569 | (fp_line (start -1.33 8.95) (end 1.33 8.95)
570 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp a7525a6d-8a12-4baa-b4fc-9d0b143a25bb))
571 | (fp_line (start 1.33 1.27) (end 1.33 8.95)
572 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp bf10a3b7-b477-49df-8bea-9a648dc95484))
573 | (fp_line (start -1.8 -1.8) (end -1.8 9.4)
574 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 25e84a29-1682-45bb-bf19-320dff2296c1))
575 | (fp_line (start -1.8 9.4) (end 1.8 9.4)
576 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 62925ed0-7426-4bd9-9daa-97c127f05492))
577 | (fp_line (start 1.8 -1.8) (end -1.8 -1.8)
578 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp d008ddcf-d91c-46a6-a7d3-6ef38409546f))
579 | (fp_line (start 1.8 9.4) (end 1.8 -1.8)
580 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 6a2e8992-ecbf-4bea-8a6f-eeba132f3050))
581 | (fp_line (start -1.27 -0.635) (end -0.635 -1.27)
582 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 78b9af7c-aa7e-4ba2-a496-d3bc5bba0b17))
583 | (fp_line (start -1.27 8.89) (end -1.27 -0.635)
584 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp b968ebd7-408b-426a-ac7f-b4baf6b5d887))
585 | (fp_line (start -0.635 -1.27) (end 1.27 -1.27)
586 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 6b1173df-bdf8-455d-8f8c-659359b303ca))
587 | (fp_line (start 1.27 -1.27) (end 1.27 8.89)
588 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 7e1e5663-60f2-4e72-873e-5b7afd9620a5))
589 | (fp_line (start 1.27 8.89) (end -1.27 8.89)
590 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp dc9fae95-d799-4867-9a4f-df70e110b5be))
591 | (pad "1" thru_hole rect (at 0 0 90) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask")
592 | (net 5 "Net-(J4-Pin_1)") (pinfunction "Pin_1") (pintype "passive") (tstamp 8f6bc868-6ba2-4cf2-b306-1bdef3f55b5f))
593 | (pad "2" thru_hole circle (at 0 2.54 90) (size 1.7 1.7) (drill 0.914) (layers "*.Cu" "*.Paste" "*.Mask")
594 | (net 6 "Net-(J4-Pin_2)") (pinfunction "Pin_2") (pintype "passive") (tstamp 40f76ff4-c406-4528-9bcf-d610b85aaefa))
595 | (pad "3" thru_hole circle (at 0 5.08 90) (size 1.7 1.7) (drill 0.914) (layers "*.Cu" "*.Paste" "*.Mask")
596 | (net 7 "Net-(J4-Pin_3)") (pinfunction "Pin_3") (pintype "passive") (tstamp 8be64675-4a9f-415b-9c2e-c2c644eab11f))
597 | (pad "4" thru_hole circle (at 0 7.62 90) (size 1.7 1.7) (drill 0.914) (layers "*.Cu" "*.Paste" "*.Mask")
598 | (net 8 "Net-(J4-Pin_4)") (pinfunction "Pin_4") (pintype "passive") (tstamp fa1780c9-1142-43af-985f-74168708a100))
599 | (model "${KICAD6_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x04_P2.54mm_Vertical.wrl"
600 | (offset (xyz 0 0 0))
601 | (scale (xyz 1 1 1))
602 | (rotate (xyz 0 0 0))
603 | )
604 | )
605 |
606 | (gr_rect (start 139.7 84.9376) (end 153.67 98.9076)
607 | (stroke (width 0.1) (type default)) (fill none) (layer "Edge.Cuts") (tstamp 712147fd-a1ff-4655-8fa4-fb3100afafd2))
608 | (gr_text "PSP2VFI" (at 143.764 95.123) (layer "F.SilkS") (tstamp 2c59f01d-d335-4264-8cdf-594fa1c31d51)
609 | (effects (font (size 1 1) (thickness 0.15)) (justify left bottom))
610 | )
611 | (gr_text "PMIC-L" (at 144.018 89.916) (layer "F.SilkS") (tstamp fcb5e0ea-6ec2-4997-8f6d-11cf4d0f75b5)
612 | (effects (font (size 1 1) (thickness 0.15)) (justify left bottom))
613 | )
614 |
615 | (segment (start 150.495 86.868) (end 152.4 88.773) (width 0.4) (layer "F.Cu") (net 1) (tstamp 042cc9cf-c980-4d16-9454-65c557980d07))
616 | (segment (start 152.4 88.773) (end 152.4 89.408) (width 0.4) (layer "F.Cu") (net 1) (tstamp b830da59-3903-4caf-bbec-d8c301feb298))
617 | (segment (start 147.955 86.868) (end 149.86 88.773) (width 0.4) (layer "F.Cu") (net 2) (tstamp 42f2f637-5621-4f55-8900-e1bf7cd0840d))
618 | (segment (start 152.4 91.948) (end 149.86 91.948) (width 0.4) (layer "F.Cu") (net 2) (tstamp 5655720c-975f-4778-85a2-38998871d162))
619 | (segment (start 149.86 88.773) (end 149.86 91.948) (width 0.4) (layer "F.Cu") (net 2) (tstamp 63b07cfd-e36f-43e2-b244-5fe5c5160760))
620 | (segment (start 140.97 89.408) (end 142.875 87.503) (width 0.4) (layer "F.Cu") (net 3) (tstamp 00c3d7ce-5438-43eb-8c0d-3c94053b9f39))
621 | (segment (start 142.875 87.503) (end 142.875 86.868) (width 0.4) (layer "F.Cu") (net 3) (tstamp 9f6b6020-8caa-4864-9193-858eba10fdd6))
622 | (segment (start 145.415 86.868) (end 147.985 89.438) (width 0.4) (layer "F.Cu") (net 4) (tstamp 8089ec39-65a6-43d9-90b9-e135eb307222))
623 | (segment (start 147.985 89.438) (end 147.985 90.998) (width 0.4) (layer "F.Cu") (net 4) (tstamp 97580e25-10b2-4ce9-bf54-c1cbb33d33b6))
624 | (segment (start 140.97 94.488) (end 142.875 96.393) (width 0.4) (layer "F.Cu") (net 5) (tstamp 1da9598a-7ee2-4288-90c7-302c4b96045e))
625 | (segment (start 142.875 96.393) (end 142.875 97.028) (width 0.4) (layer "F.Cu") (net 5) (tstamp 9f2269b3-752b-4a1b-a3fe-6e63a7f20b27))
626 | (segment (start 140.97 91.948) (end 143.51 91.948) (width 0.4) (layer "F.Cu") (net 6) (tstamp 331a7eec-d95a-4f4a-9536-fe9ba7c10dcf))
627 | (segment (start 143.51 95.123) (end 145.415 97.028) (width 0.4) (layer "F.Cu") (net 6) (tstamp 5efd65e3-088b-4f93-9b7b-678f29f7b0be))
628 | (segment (start 143.51 91.948) (end 143.51 95.123) (width 0.4) (layer "F.Cu") (net 6) (tstamp 9fea22fe-a363-4d68-8bbf-e1c779659136))
629 | (segment (start 145.385 92.898) (end 147.955 95.468) (width 0.4) (layer "F.Cu") (net 7) (tstamp 0f325260-2d88-4498-92e8-900ab4510d7f))
630 | (segment (start 147.955 95.468) (end 147.955 97.028) (width 0.4) (layer "F.Cu") (net 7) (tstamp e4a634af-373d-4d69-8e13-db5b39293585))
631 | (segment (start 150.495 97.028) (end 149.575 96.108) (width 0.4) (layer "F.Cu") (net 8) (tstamp 0023ebe4-e0cd-4607-b5f1-99bdec3568dc))
632 | (segment (start 149.575 96.108) (end 149.575 94.488) (width 0.4) (layer "F.Cu") (net 8) (tstamp a5fd75c2-4d23-430f-a781-d910b6c63b42))
633 | (segment (start 152.4 94.488) (end 149.575 94.488) (width 0.4) (layer "F.Cu") (net 8) (tstamp d2ae13c2-7ada-40c2-b052-8bac1d736697))
634 | (segment (start 149.575 94.488) (end 147.985 92.898) (width 0.4) (layer "F.Cu") (net 8) (tstamp e2e6eaa8-d082-4133-b7aa-aa497d5d9142))
635 | (segment (start 147.285 92.898) (end 147.985 92.898) (width 0.4) (layer "F.Cu") (net 8) (tstamp e85f82ce-938f-413d-9a1c-5d887c969935))
636 | (segment (start 145.385 90.998) (end 147.285 92.898) (width 0.4) (layer "F.Cu") (net 8) (tstamp ed4c24c0-9443-43c0-a00a-be5b6196fa07))
637 |
638 | )
639 |
--------------------------------------------------------------------------------
/pcb/generic/try2.kicad_prl:
--------------------------------------------------------------------------------
1 | {
2 | "board": {
3 | "active_layer": 0,
4 | "active_layer_preset": "",
5 | "auto_track_width": true,
6 | "hidden_netclasses": [],
7 | "hidden_nets": [],
8 | "high_contrast_mode": 0,
9 | "net_color_mode": 1,
10 | "opacity": {
11 | "images": 0.6,
12 | "pads": 1.0,
13 | "tracks": 1.0,
14 | "vias": 1.0,
15 | "zones": 0.6
16 | },
17 | "selection_filter": {
18 | "dimensions": true,
19 | "footprints": true,
20 | "graphics": true,
21 | "keepouts": true,
22 | "lockedItems": false,
23 | "otherItems": true,
24 | "pads": true,
25 | "text": true,
26 | "tracks": true,
27 | "vias": true,
28 | "zones": true
29 | },
30 | "visible_items": [
31 | 0,
32 | 1,
33 | 2,
34 | 3,
35 | 4,
36 | 5,
37 | 7,
38 | 8,
39 | 9,
40 | 10,
41 | 11,
42 | 12,
43 | 13,
44 | 15,
45 | 16,
46 | 17,
47 | 18,
48 | 19,
49 | 20,
50 | 21,
51 | 22,
52 | 23,
53 | 24,
54 | 25,
55 | 26,
56 | 27,
57 | 28,
58 | 29,
59 | 30,
60 | 32,
61 | 33,
62 | 34,
63 | 35,
64 | 36,
65 | 39,
66 | 40
67 | ],
68 | "visible_layers": "ffdffff_ffffffff",
69 | "zone_display_mode": 0
70 | },
71 | "meta": {
72 | "filename": "try2.kicad_prl",
73 | "version": 3
74 | },
75 | "project": {
76 | "files": []
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/pcb/generic/try2.kicad_pro:
--------------------------------------------------------------------------------
1 | {
2 | "board": {
3 | "3dviewports": [],
4 | "design_settings": {
5 | "defaults": {
6 | "board_outline_line_width": 0.09999999999999999,
7 | "copper_line_width": 0.19999999999999998,
8 | "copper_text_italic": false,
9 | "copper_text_size_h": 1.5,
10 | "copper_text_size_v": 1.5,
11 | "copper_text_thickness": 0.3,
12 | "copper_text_upright": false,
13 | "courtyard_line_width": 0.049999999999999996,
14 | "dimension_precision": 4,
15 | "dimension_units": 3,
16 | "dimensions": {
17 | "arrow_length": 1270000,
18 | "extension_offset": 500000,
19 | "keep_text_aligned": true,
20 | "suppress_zeroes": false,
21 | "text_position": 0,
22 | "units_format": 1
23 | },
24 | "fab_line_width": 0.09999999999999999,
25 | "fab_text_italic": false,
26 | "fab_text_size_h": 1.0,
27 | "fab_text_size_v": 1.0,
28 | "fab_text_thickness": 0.15,
29 | "fab_text_upright": false,
30 | "other_line_width": 0.15,
31 | "other_text_italic": false,
32 | "other_text_size_h": 1.0,
33 | "other_text_size_v": 1.0,
34 | "other_text_thickness": 0.15,
35 | "other_text_upright": false,
36 | "pads": {
37 | "drill": 0.914,
38 | "height": 1.7,
39 | "width": 1.7
40 | },
41 | "silk_line_width": 0.15,
42 | "silk_text_italic": false,
43 | "silk_text_size_h": 1.0,
44 | "silk_text_size_v": 1.0,
45 | "silk_text_thickness": 0.15,
46 | "silk_text_upright": false,
47 | "zones": {
48 | "min_clearance": 0.5
49 | }
50 | },
51 | "diff_pair_dimensions": [],
52 | "drc_exclusions": [],
53 | "meta": {
54 | "version": 2
55 | },
56 | "rule_severities": {
57 | "annular_width": "error",
58 | "clearance": "error",
59 | "connection_width": "warning",
60 | "copper_edge_clearance": "error",
61 | "copper_sliver": "warning",
62 | "courtyards_overlap": "error",
63 | "diff_pair_gap_out_of_range": "error",
64 | "diff_pair_uncoupled_length_too_long": "error",
65 | "drill_out_of_range": "error",
66 | "duplicate_footprints": "warning",
67 | "extra_footprint": "warning",
68 | "footprint": "error",
69 | "footprint_type_mismatch": "ignore",
70 | "hole_clearance": "error",
71 | "hole_near_hole": "error",
72 | "invalid_outline": "error",
73 | "isolated_copper": "warning",
74 | "item_on_disabled_layer": "error",
75 | "items_not_allowed": "error",
76 | "length_out_of_range": "error",
77 | "lib_footprint_issues": "warning",
78 | "lib_footprint_mismatch": "warning",
79 | "malformed_courtyard": "error",
80 | "microvia_drill_out_of_range": "error",
81 | "missing_courtyard": "ignore",
82 | "missing_footprint": "warning",
83 | "net_conflict": "warning",
84 | "npth_inside_courtyard": "ignore",
85 | "padstack": "warning",
86 | "pth_inside_courtyard": "ignore",
87 | "shorting_items": "error",
88 | "silk_edge_clearance": "warning",
89 | "silk_over_copper": "warning",
90 | "silk_overlap": "warning",
91 | "skew_out_of_range": "error",
92 | "solder_mask_bridge": "error",
93 | "starved_thermal": "error",
94 | "text_height": "warning",
95 | "text_thickness": "warning",
96 | "through_hole_pad_without_hole": "error",
97 | "too_many_vias": "error",
98 | "track_dangling": "warning",
99 | "track_width": "error",
100 | "tracks_crossing": "error",
101 | "unconnected_items": "error",
102 | "unresolved_variable": "error",
103 | "via_dangling": "warning",
104 | "zones_intersect": "error"
105 | },
106 | "rules": {
107 | "max_error": 0.005,
108 | "min_clearance": 0.0,
109 | "min_connection": 0.0,
110 | "min_copper_edge_clearance": 0.0,
111 | "min_hole_clearance": 0.25,
112 | "min_hole_to_hole": 0.25,
113 | "min_microvia_diameter": 0.19999999999999998,
114 | "min_microvia_drill": 0.09999999999999999,
115 | "min_resolved_spokes": 2,
116 | "min_silk_clearance": 0.0,
117 | "min_text_height": 0.7999999999999999,
118 | "min_text_thickness": 0.08,
119 | "min_through_hole_diameter": 0.3,
120 | "min_track_width": 0.0,
121 | "min_via_annular_width": 0.09999999999999999,
122 | "min_via_diameter": 0.5,
123 | "solder_mask_clearance": 0.0,
124 | "solder_mask_min_width": 0.0,
125 | "solder_mask_to_copper_clearance": 0.0,
126 | "use_height_for_length_calcs": true
127 | },
128 | "teardrop_options": [
129 | {
130 | "td_allow_use_two_tracks": true,
131 | "td_curve_segcount": 5,
132 | "td_on_pad_in_zone": false,
133 | "td_onpadsmd": true,
134 | "td_onroundshapesonly": false,
135 | "td_ontrackend": false,
136 | "td_onviapad": true
137 | }
138 | ],
139 | "teardrop_parameters": [
140 | {
141 | "td_curve_segcount": 0,
142 | "td_height_ratio": 1.0,
143 | "td_length_ratio": 0.5,
144 | "td_maxheight": 2.0,
145 | "td_maxlen": 1.0,
146 | "td_target_name": "td_round_shape",
147 | "td_width_to_size_filter_ratio": 0.9
148 | },
149 | {
150 | "td_curve_segcount": 0,
151 | "td_height_ratio": 1.0,
152 | "td_length_ratio": 0.5,
153 | "td_maxheight": 2.0,
154 | "td_maxlen": 1.0,
155 | "td_target_name": "td_rect_shape",
156 | "td_width_to_size_filter_ratio": 0.9
157 | },
158 | {
159 | "td_curve_segcount": 0,
160 | "td_height_ratio": 1.0,
161 | "td_length_ratio": 0.5,
162 | "td_maxheight": 2.0,
163 | "td_maxlen": 1.0,
164 | "td_target_name": "td_track_end",
165 | "td_width_to_size_filter_ratio": 0.9
166 | }
167 | ],
168 | "track_widths": [],
169 | "via_dimensions": [],
170 | "zones_allow_external_fillets": false
171 | },
172 | "layer_presets": [],
173 | "viewports": []
174 | },
175 | "boards": [],
176 | "cvpcb": {
177 | "equivalence_files": []
178 | },
179 | "erc": {
180 | "erc_exclusions": [],
181 | "meta": {
182 | "version": 0
183 | },
184 | "pin_map": [
185 | [
186 | 0,
187 | 0,
188 | 0,
189 | 0,
190 | 0,
191 | 0,
192 | 1,
193 | 0,
194 | 0,
195 | 0,
196 | 0,
197 | 2
198 | ],
199 | [
200 | 0,
201 | 2,
202 | 0,
203 | 1,
204 | 0,
205 | 0,
206 | 1,
207 | 0,
208 | 2,
209 | 2,
210 | 2,
211 | 2
212 | ],
213 | [
214 | 0,
215 | 0,
216 | 0,
217 | 0,
218 | 0,
219 | 0,
220 | 1,
221 | 0,
222 | 1,
223 | 0,
224 | 1,
225 | 2
226 | ],
227 | [
228 | 0,
229 | 1,
230 | 0,
231 | 0,
232 | 0,
233 | 0,
234 | 1,
235 | 1,
236 | 2,
237 | 1,
238 | 1,
239 | 2
240 | ],
241 | [
242 | 0,
243 | 0,
244 | 0,
245 | 0,
246 | 0,
247 | 0,
248 | 1,
249 | 0,
250 | 0,
251 | 0,
252 | 0,
253 | 2
254 | ],
255 | [
256 | 0,
257 | 0,
258 | 0,
259 | 0,
260 | 0,
261 | 0,
262 | 0,
263 | 0,
264 | 0,
265 | 0,
266 | 0,
267 | 2
268 | ],
269 | [
270 | 1,
271 | 1,
272 | 1,
273 | 1,
274 | 1,
275 | 0,
276 | 1,
277 | 1,
278 | 1,
279 | 1,
280 | 1,
281 | 2
282 | ],
283 | [
284 | 0,
285 | 0,
286 | 0,
287 | 1,
288 | 0,
289 | 0,
290 | 1,
291 | 0,
292 | 0,
293 | 0,
294 | 0,
295 | 2
296 | ],
297 | [
298 | 0,
299 | 2,
300 | 1,
301 | 2,
302 | 0,
303 | 0,
304 | 1,
305 | 0,
306 | 2,
307 | 2,
308 | 2,
309 | 2
310 | ],
311 | [
312 | 0,
313 | 2,
314 | 0,
315 | 1,
316 | 0,
317 | 0,
318 | 1,
319 | 0,
320 | 2,
321 | 0,
322 | 0,
323 | 2
324 | ],
325 | [
326 | 0,
327 | 2,
328 | 1,
329 | 1,
330 | 0,
331 | 0,
332 | 1,
333 | 0,
334 | 2,
335 | 0,
336 | 0,
337 | 2
338 | ],
339 | [
340 | 2,
341 | 2,
342 | 2,
343 | 2,
344 | 2,
345 | 2,
346 | 2,
347 | 2,
348 | 2,
349 | 2,
350 | 2,
351 | 2
352 | ]
353 | ],
354 | "rule_severities": {
355 | "bus_definition_conflict": "error",
356 | "bus_entry_needed": "error",
357 | "bus_to_bus_conflict": "error",
358 | "bus_to_net_conflict": "error",
359 | "conflicting_netclasses": "error",
360 | "different_unit_footprint": "error",
361 | "different_unit_net": "error",
362 | "duplicate_reference": "error",
363 | "duplicate_sheet_names": "error",
364 | "endpoint_off_grid": "warning",
365 | "extra_units": "error",
366 | "global_label_dangling": "warning",
367 | "hier_label_mismatch": "error",
368 | "label_dangling": "error",
369 | "lib_symbol_issues": "warning",
370 | "missing_bidi_pin": "warning",
371 | "missing_input_pin": "warning",
372 | "missing_power_pin": "error",
373 | "missing_unit": "warning",
374 | "multiple_net_names": "warning",
375 | "net_not_bus_member": "warning",
376 | "no_connect_connected": "warning",
377 | "no_connect_dangling": "warning",
378 | "pin_not_connected": "error",
379 | "pin_not_driven": "error",
380 | "pin_to_pin": "warning",
381 | "power_pin_not_driven": "error",
382 | "similar_labels": "warning",
383 | "simulation_model_issue": "ignore",
384 | "unannotated": "error",
385 | "unit_value_mismatch": "error",
386 | "unresolved_variable": "error",
387 | "wire_dangling": "error"
388 | }
389 | },
390 | "libraries": {
391 | "pinned_footprint_libs": [],
392 | "pinned_symbol_libs": []
393 | },
394 | "meta": {
395 | "filename": "try2.kicad_pro",
396 | "version": 1
397 | },
398 | "net_settings": {
399 | "classes": [
400 | {
401 | "bus_width": 12,
402 | "clearance": 0.2,
403 | "diff_pair_gap": 0.25,
404 | "diff_pair_via_gap": 0.25,
405 | "diff_pair_width": 0.2,
406 | "line_style": 0,
407 | "microvia_diameter": 0.3,
408 | "microvia_drill": 0.1,
409 | "name": "Default",
410 | "pcb_color": "rgba(0, 0, 0, 0.000)",
411 | "schematic_color": "rgba(0, 0, 0, 0.000)",
412 | "track_width": 0.25,
413 | "via_diameter": 0.8,
414 | "via_drill": 0.4,
415 | "wire_width": 6
416 | }
417 | ],
418 | "meta": {
419 | "version": 3
420 | },
421 | "net_colors": null,
422 | "netclass_assignments": null,
423 | "netclass_patterns": []
424 | },
425 | "pcbnew": {
426 | "last_paths": {
427 | "gencad": "",
428 | "idf": "",
429 | "netlist": "",
430 | "specctra_dsn": "",
431 | "step": "",
432 | "vrml": ""
433 | },
434 | "page_layout_descr_file": ""
435 | },
436 | "schematic": {
437 | "annotate_start_num": 0,
438 | "drawing": {
439 | "dashed_lines_dash_length_ratio": 12.0,
440 | "dashed_lines_gap_length_ratio": 3.0,
441 | "default_line_thickness": 6.0,
442 | "default_text_size": 50.0,
443 | "field_names": [],
444 | "intersheets_ref_own_page": false,
445 | "intersheets_ref_prefix": "",
446 | "intersheets_ref_short": false,
447 | "intersheets_ref_show": false,
448 | "intersheets_ref_suffix": "",
449 | "junction_size_choice": 3,
450 | "label_size_ratio": 0.375,
451 | "pin_symbol_size": 25.0,
452 | "text_offset_ratio": 0.15
453 | },
454 | "legacy_lib_dir": "",
455 | "legacy_lib_list": [],
456 | "meta": {
457 | "version": 1
458 | },
459 | "net_format_name": "",
460 | "page_layout_descr_file": "",
461 | "plot_directory": "",
462 | "spice_current_sheet_as_root": false,
463 | "spice_external_command": "spice \"%I\"",
464 | "spice_model_current_sheet_as_root": true,
465 | "spice_save_all_currents": false,
466 | "spice_save_all_voltages": false,
467 | "subpart_first_id": 65,
468 | "subpart_id_separator": 0
469 | },
470 | "sheets": [
471 | [
472 | "bcfa8c5f-fa32-4fff-bf4e-909f86596adf",
473 | ""
474 | ]
475 | ],
476 | "text_variables": {}
477 | }
478 |
--------------------------------------------------------------------------------
/pcb/generic/try2.kicad_sch:
--------------------------------------------------------------------------------
1 | (kicad_sch (version 20230121) (generator eeschema)
2 |
3 | (uuid bcfa8c5f-fa32-4fff-bf4e-909f86596adf)
4 |
5 | (paper "A4")
6 |
7 | (lib_symbols
8 | (symbol "Connector:Conn_01x04_Pin" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes)
9 | (property "Reference" "J" (at 0 5.08 0)
10 | (effects (font (size 1.27 1.27)))
11 | )
12 | (property "Value" "Conn_01x04_Pin" (at 0 -7.62 0)
13 | (effects (font (size 1.27 1.27)))
14 | )
15 | (property "Footprint" "" (at 0 0 0)
16 | (effects (font (size 1.27 1.27)) hide)
17 | )
18 | (property "Datasheet" "~" (at 0 0 0)
19 | (effects (font (size 1.27 1.27)) hide)
20 | )
21 | (property "ki_locked" "" (at 0 0 0)
22 | (effects (font (size 1.27 1.27)))
23 | )
24 | (property "ki_keywords" "connector" (at 0 0 0)
25 | (effects (font (size 1.27 1.27)) hide)
26 | )
27 | (property "ki_description" "Generic connector, single row, 01x04, script generated" (at 0 0 0)
28 | (effects (font (size 1.27 1.27)) hide)
29 | )
30 | (property "ki_fp_filters" "Connector*:*_1x??_*" (at 0 0 0)
31 | (effects (font (size 1.27 1.27)) hide)
32 | )
33 | (symbol "Conn_01x04_Pin_1_1"
34 | (polyline
35 | (pts
36 | (xy 1.27 -5.08)
37 | (xy 0.8636 -5.08)
38 | )
39 | (stroke (width 0.1524) (type default))
40 | (fill (type none))
41 | )
42 | (polyline
43 | (pts
44 | (xy 1.27 -2.54)
45 | (xy 0.8636 -2.54)
46 | )
47 | (stroke (width 0.1524) (type default))
48 | (fill (type none))
49 | )
50 | (polyline
51 | (pts
52 | (xy 1.27 0)
53 | (xy 0.8636 0)
54 | )
55 | (stroke (width 0.1524) (type default))
56 | (fill (type none))
57 | )
58 | (polyline
59 | (pts
60 | (xy 1.27 2.54)
61 | (xy 0.8636 2.54)
62 | )
63 | (stroke (width 0.1524) (type default))
64 | (fill (type none))
65 | )
66 | (rectangle (start 0.8636 -4.953) (end 0 -5.207)
67 | (stroke (width 0.1524) (type default))
68 | (fill (type outline))
69 | )
70 | (rectangle (start 0.8636 -2.413) (end 0 -2.667)
71 | (stroke (width 0.1524) (type default))
72 | (fill (type outline))
73 | )
74 | (rectangle (start 0.8636 0.127) (end 0 -0.127)
75 | (stroke (width 0.1524) (type default))
76 | (fill (type outline))
77 | )
78 | (rectangle (start 0.8636 2.667) (end 0 2.413)
79 | (stroke (width 0.1524) (type default))
80 | (fill (type outline))
81 | )
82 | (pin passive line (at 5.08 2.54 180) (length 3.81)
83 | (name "Pin_1" (effects (font (size 1.27 1.27))))
84 | (number "1" (effects (font (size 1.27 1.27))))
85 | )
86 | (pin passive line (at 5.08 0 180) (length 3.81)
87 | (name "Pin_2" (effects (font (size 1.27 1.27))))
88 | (number "2" (effects (font (size 1.27 1.27))))
89 | )
90 | (pin passive line (at 5.08 -2.54 180) (length 3.81)
91 | (name "Pin_3" (effects (font (size 1.27 1.27))))
92 | (number "3" (effects (font (size 1.27 1.27))))
93 | )
94 | (pin passive line (at 5.08 -5.08 180) (length 3.81)
95 | (name "Pin_4" (effects (font (size 1.27 1.27))))
96 | (number "4" (effects (font (size 1.27 1.27))))
97 | )
98 | )
99 | )
100 | (symbol "Connector_Generic:Conn_01x01" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes)
101 | (property "Reference" "J" (at 0 2.54 0)
102 | (effects (font (size 1.27 1.27)))
103 | )
104 | (property "Value" "Conn_01x01" (at 0 -2.54 0)
105 | (effects (font (size 1.27 1.27)))
106 | )
107 | (property "Footprint" "" (at 0 0 0)
108 | (effects (font (size 1.27 1.27)) hide)
109 | )
110 | (property "Datasheet" "~" (at 0 0 0)
111 | (effects (font (size 1.27 1.27)) hide)
112 | )
113 | (property "ki_keywords" "connector" (at 0 0 0)
114 | (effects (font (size 1.27 1.27)) hide)
115 | )
116 | (property "ki_description" "Generic connector, single row, 01x01, script generated (kicad-library-utils/schlib/autogen/connector/)" (at 0 0 0)
117 | (effects (font (size 1.27 1.27)) hide)
118 | )
119 | (property "ki_fp_filters" "Connector*:*_1x??_*" (at 0 0 0)
120 | (effects (font (size 1.27 1.27)) hide)
121 | )
122 | (symbol "Conn_01x01_1_1"
123 | (rectangle (start -1.27 0.127) (end 0 -0.127)
124 | (stroke (width 0.1524) (type default))
125 | (fill (type none))
126 | )
127 | (rectangle (start -1.27 1.27) (end 1.27 -1.27)
128 | (stroke (width 0.254) (type default))
129 | (fill (type background))
130 | )
131 | (pin passive line (at -5.08 0 0) (length 3.81)
132 | (name "Pin_1" (effects (font (size 1.27 1.27))))
133 | (number "1" (effects (font (size 1.27 1.27))))
134 | )
135 | )
136 | )
137 | (symbol "Transistor_FET:MMBF170" (pin_names hide) (in_bom yes) (on_board yes)
138 | (property "Reference" "Q" (at 5.08 1.905 0)
139 | (effects (font (size 1.27 1.27)) (justify left))
140 | )
141 | (property "Value" "MMBF170" (at 5.08 0 0)
142 | (effects (font (size 1.27 1.27)) (justify left))
143 | )
144 | (property "Footprint" "Package_TO_SOT_SMD:SOT-23" (at 5.08 -1.905 0)
145 | (effects (font (size 1.27 1.27) italic) (justify left) hide)
146 | )
147 | (property "Datasheet" "https://www.diodes.com/assets/Datasheets/ds30104.pdf" (at 0 0 0)
148 | (effects (font (size 1.27 1.27)) (justify left) hide)
149 | )
150 | (property "ki_keywords" "N-Channel MOSFET" (at 0 0 0)
151 | (effects (font (size 1.27 1.27)) hide)
152 | )
153 | (property "ki_description" "0.5A Id, 60V Vds, N-Channel MOSFET, SOT-23" (at 0 0 0)
154 | (effects (font (size 1.27 1.27)) hide)
155 | )
156 | (property "ki_fp_filters" "SOT?23*" (at 0 0 0)
157 | (effects (font (size 1.27 1.27)) hide)
158 | )
159 | (symbol "MMBF170_0_1"
160 | (polyline
161 | (pts
162 | (xy 0.254 0)
163 | (xy -2.54 0)
164 | )
165 | (stroke (width 0) (type default))
166 | (fill (type none))
167 | )
168 | (polyline
169 | (pts
170 | (xy 0.254 1.905)
171 | (xy 0.254 -1.905)
172 | )
173 | (stroke (width 0.254) (type default))
174 | (fill (type none))
175 | )
176 | (polyline
177 | (pts
178 | (xy 0.762 -1.27)
179 | (xy 0.762 -2.286)
180 | )
181 | (stroke (width 0.254) (type default))
182 | (fill (type none))
183 | )
184 | (polyline
185 | (pts
186 | (xy 0.762 0.508)
187 | (xy 0.762 -0.508)
188 | )
189 | (stroke (width 0.254) (type default))
190 | (fill (type none))
191 | )
192 | (polyline
193 | (pts
194 | (xy 0.762 2.286)
195 | (xy 0.762 1.27)
196 | )
197 | (stroke (width 0.254) (type default))
198 | (fill (type none))
199 | )
200 | (polyline
201 | (pts
202 | (xy 2.54 2.54)
203 | (xy 2.54 1.778)
204 | )
205 | (stroke (width 0) (type default))
206 | (fill (type none))
207 | )
208 | (polyline
209 | (pts
210 | (xy 2.54 -2.54)
211 | (xy 2.54 0)
212 | (xy 0.762 0)
213 | )
214 | (stroke (width 0) (type default))
215 | (fill (type none))
216 | )
217 | (polyline
218 | (pts
219 | (xy 0.762 -1.778)
220 | (xy 3.302 -1.778)
221 | (xy 3.302 1.778)
222 | (xy 0.762 1.778)
223 | )
224 | (stroke (width 0) (type default))
225 | (fill (type none))
226 | )
227 | (polyline
228 | (pts
229 | (xy 1.016 0)
230 | (xy 2.032 0.381)
231 | (xy 2.032 -0.381)
232 | (xy 1.016 0)
233 | )
234 | (stroke (width 0) (type default))
235 | (fill (type outline))
236 | )
237 | (polyline
238 | (pts
239 | (xy 2.794 0.508)
240 | (xy 2.921 0.381)
241 | (xy 3.683 0.381)
242 | (xy 3.81 0.254)
243 | )
244 | (stroke (width 0) (type default))
245 | (fill (type none))
246 | )
247 | (polyline
248 | (pts
249 | (xy 3.302 0.381)
250 | (xy 2.921 -0.254)
251 | (xy 3.683 -0.254)
252 | (xy 3.302 0.381)
253 | )
254 | (stroke (width 0) (type default))
255 | (fill (type none))
256 | )
257 | (circle (center 1.651 0) (radius 2.794)
258 | (stroke (width 0.254) (type default))
259 | (fill (type none))
260 | )
261 | (circle (center 2.54 -1.778) (radius 0.254)
262 | (stroke (width 0) (type default))
263 | (fill (type outline))
264 | )
265 | (circle (center 2.54 1.778) (radius 0.254)
266 | (stroke (width 0) (type default))
267 | (fill (type outline))
268 | )
269 | )
270 | (symbol "MMBF170_1_1"
271 | (pin input line (at -5.08 0 0) (length 2.54)
272 | (name "G" (effects (font (size 1.27 1.27))))
273 | (number "1" (effects (font (size 1.27 1.27))))
274 | )
275 | (pin passive line (at 2.54 -5.08 90) (length 2.54)
276 | (name "S" (effects (font (size 1.27 1.27))))
277 | (number "2" (effects (font (size 1.27 1.27))))
278 | )
279 | (pin passive line (at 2.54 5.08 270) (length 2.54)
280 | (name "D" (effects (font (size 1.27 1.27))))
281 | (number "3" (effects (font (size 1.27 1.27))))
282 | )
283 | )
284 | )
285 | )
286 |
287 | (junction (at 133.35 100.33) (diameter 0) (color 0 0 0 0)
288 | (uuid 09555514-83a3-489c-9eb0-3659422fbda9)
289 | )
290 | (junction (at 129.54 105.41) (diameter 0) (color 0 0 0 0)
291 | (uuid 259ac6f3-1e1b-4a24-8903-a3c901d0040e)
292 | )
293 | (junction (at 121.92 100.33) (diameter 0) (color 0 0 0 0)
294 | (uuid d527494e-069e-4401-b2b0-9e2d5149b11d)
295 | )
296 | (junction (at 111.76 100.33) (diameter 0) (color 0 0 0 0)
297 | (uuid d6325b41-5d82-4b46-8f3e-3ac2496b30c0)
298 | )
299 |
300 | (wire (pts (xy 111.76 102.87) (xy 111.76 100.33))
301 | (stroke (width 0) (type default))
302 | (uuid 0ea1b5cd-03b7-4d75-9ac9-7b75b7682d2a)
303 | )
304 | (wire (pts (xy 114.3 110.49) (xy 114.3 102.87))
305 | (stroke (width 0) (type default))
306 | (uuid 0f950943-e704-46c6-923e-5243c77bee77)
307 | )
308 | (wire (pts (xy 133.35 100.33) (xy 134.62 100.33))
309 | (stroke (width 0) (type default))
310 | (uuid 16ef7b4c-d695-4e7f-b3a9-ddf73a6bb566)
311 | )
312 | (wire (pts (xy 133.35 96.52) (xy 133.35 100.33))
313 | (stroke (width 0) (type default))
314 | (uuid 2605fb6e-6241-4d82-b9ad-39cd76cc3dcb)
315 | )
316 | (wire (pts (xy 132.08 100.33) (xy 133.35 100.33))
317 | (stroke (width 0) (type default))
318 | (uuid 26de96c5-3d0d-4c8a-b347-5ba897ba121f)
319 | )
320 | (wire (pts (xy 121.92 100.33) (xy 121.92 105.41))
321 | (stroke (width 0) (type default))
322 | (uuid 2c005704-137c-42ac-8413-0ee47b163963)
323 | )
324 | (wire (pts (xy 128.27 96.52) (xy 133.35 96.52))
325 | (stroke (width 0) (type default))
326 | (uuid 46dff82a-723f-4e8a-9aaf-0ccd3614be55)
327 | )
328 | (wire (pts (xy 124.46 110.49) (xy 114.3 110.49))
329 | (stroke (width 0) (type default))
330 | (uuid 4c846d88-afb0-4294-9239-8e6f1a095486)
331 | )
332 | (wire (pts (xy 116.84 107.95) (xy 127 107.95))
333 | (stroke (width 0) (type default))
334 | (uuid 4d345351-7fd7-402b-af12-be4b8d134a3d)
335 | )
336 | (wire (pts (xy 121.92 90.17) (xy 121.92 96.52))
337 | (stroke (width 0) (type default))
338 | (uuid 531b7566-6e82-481d-ad48-2058260a2f2a)
339 | )
340 | (wire (pts (xy 114.3 102.87) (xy 111.76 102.87))
341 | (stroke (width 0) (type default))
342 | (uuid 5deae35f-9021-4365-b6a7-e9d210a35473)
343 | )
344 | (wire (pts (xy 111.76 104.14) (xy 111.76 113.03))
345 | (stroke (width 0) (type default))
346 | (uuid 6370d553-49c0-4df4-a8ce-ee8530f5cd7c)
347 | )
348 | (wire (pts (xy 129.54 105.41) (xy 134.62 105.41))
349 | (stroke (width 0) (type default))
350 | (uuid 63f5b305-1d51-4fb2-a8dd-73b4a1b5a366)
351 | )
352 | (wire (pts (xy 124.46 90.17) (xy 124.46 92.71))
353 | (stroke (width 0) (type default))
354 | (uuid 72bb64cf-7f86-4a7d-b608-1421ab2bb4ec)
355 | )
356 | (wire (pts (xy 121.92 96.52) (xy 111.76 96.52))
357 | (stroke (width 0) (type default))
358 | (uuid 75a53fd4-5d50-4403-9c98-878bc3b5ab50)
359 | )
360 | (wire (pts (xy 129.54 90.17) (xy 129.54 95.25))
361 | (stroke (width 0) (type default))
362 | (uuid 78af15bb-1617-466b-9c9a-d66e8e336397)
363 | )
364 | (wire (pts (xy 124.46 92.71) (xy 127 92.71))
365 | (stroke (width 0) (type default))
366 | (uuid 83f6616b-7430-4b2c-b6a0-2ebf337ffbd7)
367 | )
368 | (wire (pts (xy 124.46 113.03) (xy 124.46 110.49))
369 | (stroke (width 0) (type default))
370 | (uuid 88039952-d48b-449c-b493-2e7b9cf68ff0)
371 | )
372 | (wire (pts (xy 127 91.44) (xy 128.27 91.44))
373 | (stroke (width 0) (type default))
374 | (uuid 9545cd9d-cce7-4f77-8a85-85e2764b0bc2)
375 | )
376 | (wire (pts (xy 127 107.95) (xy 127 113.03))
377 | (stroke (width 0) (type default))
378 | (uuid a578cf3e-23f0-4983-97d4-ac3723a0924c)
379 | )
380 | (wire (pts (xy 129.54 95.25) (xy 134.62 95.25))
381 | (stroke (width 0) (type default))
382 | (uuid b644e963-e117-4f60-bec3-a5decfa376f3)
383 | )
384 | (wire (pts (xy 111.76 113.03) (xy 121.92 113.03))
385 | (stroke (width 0) (type default))
386 | (uuid bc70c397-f07b-4503-b659-e0770788d2f9)
387 | )
388 | (wire (pts (xy 121.92 105.41) (xy 129.54 105.41))
389 | (stroke (width 0) (type default))
390 | (uuid cd177f4e-2806-4d34-b1c9-7cc4b25623a9)
391 | )
392 | (wire (pts (xy 128.27 91.44) (xy 128.27 96.52))
393 | (stroke (width 0) (type default))
394 | (uuid e84f8ab0-7a08-48b4-bd71-b9a32101a1f7)
395 | )
396 | (wire (pts (xy 127 90.17) (xy 127 91.44))
397 | (stroke (width 0) (type default))
398 | (uuid edd86a2a-52bf-4d6b-a386-7864aa4b5324)
399 | )
400 | (wire (pts (xy 129.54 105.41) (xy 129.54 113.03))
401 | (stroke (width 0) (type default))
402 | (uuid f4973273-d68a-4607-bec0-f632b0c8ea61)
403 | )
404 |
405 | (symbol (lib_id "Connector_Generic:Conn_01x01") (at 139.7 105.41 0) (unit 1)
406 | (in_bom yes) (on_board yes) (dnp no)
407 | (uuid 1a76b9fd-9497-49fa-a0aa-e2b3a374cbf5)
408 | (property "Reference" "J7" (at 142.24 104.14 0)
409 | (effects (font (size 1.27 1.27)) (justify left) hide)
410 | )
411 | (property "Value" "GND" (at 142.24 105.41 0)
412 | (effects (font (size 1.27 1.27)) (justify left))
413 | )
414 | (property "Footprint" "Connector_Wire:SolderWirePad_1x01_SMD_1x2mm" (at 139.7 105.41 0)
415 | (effects (font (size 1.27 1.27)) hide)
416 | )
417 | (property "Datasheet" "~" (at 139.7 105.41 0)
418 | (effects (font (size 1.27 1.27)) hide)
419 | )
420 | (pin "1" (uuid 557d3567-56c5-471f-ba02-28faa43740d8))
421 | (instances
422 | (project "try2"
423 | (path "/bcfa8c5f-fa32-4fff-bf4e-909f86596adf"
424 | (reference "J7") (unit 1)
425 | )
426 | )
427 | )
428 | )
429 |
430 | (symbol (lib_id "Connector_Generic:Conn_01x01") (at 106.68 104.14 0) (mirror y) (unit 1)
431 | (in_bom yes) (on_board yes) (dnp no)
432 | (uuid 4047d465-2b2f-4d63-9bad-1368ef3a0534)
433 | (property "Reference" "J6" (at 104.14 102.87 0)
434 | (effects (font (size 1.27 1.27)) (justify left) hide)
435 | )
436 | (property "Value" "DAT0" (at 104.14 104.14 0)
437 | (effects (font (size 1.27 1.27)) (justify left))
438 | )
439 | (property "Footprint" "Connector_Wire:SolderWirePad_1x01_SMD_1x2mm" (at 106.68 104.14 0)
440 | (effects (font (size 1.27 1.27)) hide)
441 | )
442 | (property "Datasheet" "~" (at 106.68 104.14 0)
443 | (effects (font (size 1.27 1.27)) hide)
444 | )
445 | (pin "1" (uuid 055b30aa-18ce-4bc9-9ca9-e11ecd8a178a))
446 | (instances
447 | (project "try2"
448 | (path "/bcfa8c5f-fa32-4fff-bf4e-909f86596adf"
449 | (reference "J6") (unit 1)
450 | )
451 | )
452 | )
453 | )
454 |
455 | (symbol (lib_id "Connector_Generic:Conn_01x01") (at 139.7 95.25 0) (unit 1)
456 | (in_bom yes) (on_board yes) (dnp no)
457 | (uuid 4a5746ae-3018-4f3a-bedb-3632ed6d8921)
458 | (property "Reference" "J1" (at 142.24 93.98 0)
459 | (effects (font (size 1.27 1.27)) (justify left) hide)
460 | )
461 | (property "Value" "GP/PA" (at 142.24 95.25 0)
462 | (effects (font (size 1.27 1.27)) (justify left))
463 | )
464 | (property "Footprint" "Connector_Wire:SolderWirePad_1x01_SMD_1x2mm" (at 139.7 95.25 0)
465 | (effects (font (size 1.27 1.27)) hide)
466 | )
467 | (property "Datasheet" "~" (at 139.7 95.25 0)
468 | (effects (font (size 1.27 1.27)) hide)
469 | )
470 | (pin "1" (uuid 67b42d12-132f-4c09-b800-78a6c3b6825d))
471 | (instances
472 | (project "try2"
473 | (path "/bcfa8c5f-fa32-4fff-bf4e-909f86596adf"
474 | (reference "J1") (unit 1)
475 | )
476 | )
477 | )
478 | )
479 |
480 | (symbol (lib_id "Transistor_FET:MMBF170") (at 116.84 102.87 90) (unit 1)
481 | (in_bom yes) (on_board yes) (dnp no)
482 | (uuid 4bfed1c7-fad3-48bd-a249-29e1b1653195)
483 | (property "Reference" "Q_GPIO" (at 116.84 97.79 90)
484 | (effects (font (size 1.27 1.27)) hide)
485 | )
486 | (property "Value" "MMBF170" (at 116.84 93.98 90)
487 | (effects (font (size 1.27 1.27)) hide)
488 | )
489 | (property "Footprint" "Package_TO_SOT_SMD:SOT-23" (at 118.745 97.79 0)
490 | (effects (font (size 1.27 1.27) italic) (justify left) hide)
491 | )
492 | (property "Datasheet" "https://www.diodes.com/assets/Datasheets/ds30104.pdf" (at 116.84 102.87 0)
493 | (effects (font (size 1.27 1.27)) (justify left) hide)
494 | )
495 | (pin "1" (uuid d2197166-f3c1-44b1-9b0a-7ad3023342d9))
496 | (pin "2" (uuid a0113543-95ab-40e8-9b62-a0bccf3b1eba))
497 | (pin "3" (uuid 93fae112-8cda-4253-a1f6-88c8540262bf))
498 | (instances
499 | (project "try2"
500 | (path "/bcfa8c5f-fa32-4fff-bf4e-909f86596adf"
501 | (reference "Q_GPIO") (unit 1)
502 | )
503 | )
504 | )
505 | )
506 |
507 | (symbol (lib_id "Transistor_FET:MMBF170") (at 127 97.79 270) (unit 1)
508 | (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced)
509 | (uuid 549437d3-6439-4a45-9108-3ccadafdbdf6)
510 | (property "Reference" "Q_GLITCH" (at 127 104.14 90)
511 | (effects (font (size 1.27 1.27)) hide)
512 | )
513 | (property "Value" "MMBF170" (at 127 106.68 90)
514 | (effects (font (size 1.27 1.27)) hide)
515 | )
516 | (property "Footprint" "Package_TO_SOT_SMD:SOT-23" (at 125.095 102.87 0)
517 | (effects (font (size 1.27 1.27) italic) (justify left) hide)
518 | )
519 | (property "Datasheet" "https://www.diodes.com/assets/Datasheets/ds30104.pdf" (at 127 97.79 0)
520 | (effects (font (size 1.27 1.27)) (justify left) hide)
521 | )
522 | (pin "1" (uuid 0e5b8b41-9517-46dc-9729-84d95099bc83))
523 | (pin "2" (uuid 52a38947-63f7-4907-91a8-f8e0e3f93fdc))
524 | (pin "3" (uuid fc4286df-99c2-4071-af34-7c87ddd9153c))
525 | (instances
526 | (project "try2"
527 | (path "/bcfa8c5f-fa32-4fff-bf4e-909f86596adf"
528 | (reference "Q_GLITCH") (unit 1)
529 | )
530 | )
531 | )
532 | )
533 |
534 | (symbol (lib_id "Connector_Generic:Conn_01x01") (at 139.7 100.33 0) (unit 1)
535 | (in_bom yes) (on_board yes) (dnp no)
536 | (uuid 847985e0-629b-495c-ba36-4f389455f731)
537 | (property "Reference" "J2" (at 142.24 99.06 0)
538 | (effects (font (size 1.27 1.27)) (justify left) hide)
539 | )
540 | (property "Value" "VDD" (at 142.24 100.33 0)
541 | (effects (font (size 1.27 1.27)) (justify left))
542 | )
543 | (property "Footprint" "Connector_Wire:SolderWirePad_1x01_SMD_1x2mm" (at 139.7 100.33 0)
544 | (effects (font (size 1.27 1.27)) hide)
545 | )
546 | (property "Datasheet" "~" (at 139.7 100.33 0)
547 | (effects (font (size 1.27 1.27)) hide)
548 | )
549 | (pin "1" (uuid 95cb6a16-0fbb-4179-8ace-15b6f73b9069))
550 | (instances
551 | (project "try2"
552 | (path "/bcfa8c5f-fa32-4fff-bf4e-909f86596adf"
553 | (reference "J2") (unit 1)
554 | )
555 | )
556 | )
557 | )
558 |
559 | (symbol (lib_id "Connector_Generic:Conn_01x01") (at 106.68 96.52 0) (mirror y) (unit 1)
560 | (in_bom yes) (on_board yes) (dnp no)
561 | (uuid 84e7a978-af81-451b-b3f4-fe8edf835fcd)
562 | (property "Reference" "J8" (at 102.87 95.25 0)
563 | (effects (font (size 1.27 1.27)) hide)
564 | )
565 | (property "Value" "GP/RST" (at 100.33 96.52 0)
566 | (effects (font (size 1.27 1.27)))
567 | )
568 | (property "Footprint" "Connector_Wire:SolderWirePad_1x01_SMD_1x2mm" (at 106.68 96.52 0)
569 | (effects (font (size 1.27 1.27)) hide)
570 | )
571 | (property "Datasheet" "~" (at 106.68 96.52 0)
572 | (effects (font (size 1.27 1.27)) hide)
573 | )
574 | (pin "1" (uuid bb90558b-b3ba-488e-8f46-955f990e31bd))
575 | (instances
576 | (project "try2"
577 | (path "/bcfa8c5f-fa32-4fff-bf4e-909f86596adf"
578 | (reference "J8") (unit 1)
579 | )
580 | )
581 | )
582 | )
583 |
584 | (symbol (lib_id "Connector:Conn_01x04_Pin") (at 124.46 118.11 90) (unit 1)
585 | (in_bom yes) (on_board yes) (dnp no)
586 | (uuid b20c4221-ef52-4706-bbaa-bf51894424ec)
587 | (property "Reference" "J4" (at 125.73 120.65 90)
588 | (effects (font (size 1.27 1.27)) hide)
589 | )
590 | (property "Value" "Conn_01x04_Pin" (at 125.73 119.38 90)
591 | (effects (font (size 1.27 1.27)))
592 | )
593 | (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical" (at 124.46 118.11 0)
594 | (effects (font (size 1.27 1.27)) hide)
595 | )
596 | (property "Datasheet" "~" (at 124.46 118.11 0)
597 | (effects (font (size 1.27 1.27)) hide)
598 | )
599 | (pin "1" (uuid 484aac23-3053-4c00-bdf4-db638922327d))
600 | (pin "2" (uuid ed8b025a-6867-423e-bde1-c65e7cfa3df3))
601 | (pin "3" (uuid db85d1bf-b9cf-4068-87b9-305bf98e53ca))
602 | (pin "4" (uuid 44b86971-feee-4c30-97bc-acd1f2cb5a60))
603 | (instances
604 | (project "try2"
605 | (path "/bcfa8c5f-fa32-4fff-bf4e-909f86596adf"
606 | (reference "J4") (unit 1)
607 | )
608 | )
609 | )
610 | )
611 |
612 | (symbol (lib_id "Connector:Conn_01x04_Pin") (at 124.46 85.09 90) (mirror x) (unit 1)
613 | (in_bom yes) (on_board yes) (dnp no)
614 | (uuid efb629ea-c2d5-4ca7-9d69-e34aa4565f87)
615 | (property "Reference" "J3" (at 124.46 80.01 90)
616 | (effects (font (size 1.27 1.27)) hide)
617 | )
618 | (property "Value" "Conn_01x04_Pin" (at 125.73 83.82 90)
619 | (effects (font (size 1.27 1.27)))
620 | )
621 | (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical" (at 124.46 85.09 0)
622 | (effects (font (size 1.27 1.27)) hide)
623 | )
624 | (property "Datasheet" "~" (at 124.46 85.09 0)
625 | (effects (font (size 1.27 1.27)) hide)
626 | )
627 | (pin "4" (uuid cde84e10-4ea2-4002-8b9d-5ac038569c9d))
628 | (pin "1" (uuid 6fee4a08-c5a8-45da-9807-f8b8d55bcd96))
629 | (pin "2" (uuid 3a17e0f8-31aa-43dc-9d39-cf1c7c38aae3))
630 | (pin "3" (uuid e7959c92-f730-4896-bbf3-3cb0885c914f))
631 | (instances
632 | (project "try2"
633 | (path "/bcfa8c5f-fa32-4fff-bf4e-909f86596adf"
634 | (reference "J3") (unit 1)
635 | )
636 | )
637 | )
638 | )
639 |
640 | (symbol (lib_id "Connector_Generic:Conn_01x01") (at 106.68 100.33 0) (mirror y) (unit 1)
641 | (in_bom yes) (on_board yes) (dnp no)
642 | (uuid f8779e91-8298-48b9-97e5-ba4d76968197)
643 | (property "Reference" "J5" (at 104.14 99.06 0)
644 | (effects (font (size 1.27 1.27)) (justify left) hide)
645 | )
646 | (property "Value" "GPIO" (at 104.14 100.33 0)
647 | (effects (font (size 1.27 1.27)) (justify left))
648 | )
649 | (property "Footprint" "Connector_Wire:SolderWirePad_1x01_SMD_1x2mm" (at 106.68 100.33 0)
650 | (effects (font (size 1.27 1.27)) hide)
651 | )
652 | (property "Datasheet" "~" (at 106.68 100.33 0)
653 | (effects (font (size 1.27 1.27)) hide)
654 | )
655 | (pin "1" (uuid 96b90858-f0ca-458c-b20e-dbf4927a326f))
656 | (instances
657 | (project "try2"
658 | (path "/bcfa8c5f-fa32-4fff-bf4e-909f86596adf"
659 | (reference "J5") (unit 1)
660 | )
661 | )
662 | )
663 | )
664 |
665 | (sheet_instances
666 | (path "/" (page "1"))
667 | )
668 | )
669 |
--------------------------------------------------------------------------------
/pics/laview-cutoff.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SKGleba/psp2sdboot/9a9173bc28723fe1de72f6bb5811087be0cd50f1/pics/laview-cutoff.png
--------------------------------------------------------------------------------
/pics/laview-uptoread.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SKGleba/psp2sdboot/9a9173bc28723fe1de72f6bb5811087be0cd50f1/pics/laview-uptoread.png
--------------------------------------------------------------------------------
/pics/sdboot_sram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SKGleba/psp2sdboot/9a9173bc28723fe1de72f6bb5811087be0cd50f1/pics/sdboot_sram.png
--------------------------------------------------------------------------------
/sdboot.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import time
3 | import re
4 | import bert
5 | import teensy_rpc
6 |
7 | ## my pstv:
8 | # stage1: 158000000 / 900 / 130
9 | # small: 341000000 / 100000 / 130
10 | # big: 385000000 / 1100 / 130
11 | # max (32kb): 498000000 / 160 / 130
12 | # some logic: (read+ib) * ((first_read / (read+ib)) + 5 + (payload_size / 512)) ~= up_to_read=5215000 up_to_read_mult=(34 + (payload_size / 512))
13 | # 470/125
14 | # 300,2700/130
15 | DEFAULT_VARS_DICT = {
16 | "mosfet" : [22, "teensy pad to which the mosfet gate is connected"],
17 | "dat0" : [23, "teensy pad to which the dat0 probe is connected"],
18 | "up_to_read" : [158000000, "delay between dat0 going up and the ~middle of an empty, post-payload sector read"],
19 | "up_to_read_mult" : [1, "multiplier for the [up_to_read] delay"],
20 | "up_to_read_mark" : [0, "(debug) set this if you want to insert a glitch after the up_to_read delay"],
21 | "offset" : [200, "delay between end of sector read and glitch insertion, starting value for the [width->width_max] loop"],
22 | "offset_mult" : [1, "multiplier for the [offset] delay"],
23 | "width" : [130, "how long the glitch/mosfet is held for, starting value for the glitch loop"],
24 | "state" : [1, "dat0 up pad logic level, set this to 0 if dat0 is inverted"],
25 | "width_max" : [130, "max [width] value for the glitch loop"],
26 | "width_step" : [5, "[width] increment size between each attempt in the glitch loop"],
27 | "delay_next" : [1, "delay (in seconds) between each attempt in the glitch loop"],
28 | "delay_boot" : [1, "delay (in seconds) between console shutdown and glitch attempt"],
29 | "delay_check" : [3, "delay (in seconds) between sdboot/glitch attempt and success confirmation checks"],
30 | "offset_max" : [200, "max [offset] value for the [width->width_max] loop"],
31 | "offset_step" : [2400, "[offset] increment size after each [width->width_max] loop"],
32 | "loops" : [0, "glitch loop count, 0 - infinite"]
33 | }
34 |
35 | VAR_ALIASES_DICT = {
36 | "u" : "up_to_read",
37 | "ux" : "up_to_read_mult",
38 | "o" : "offset",
39 | "ox" : "offset_mult",
40 | "om" : "offset_max",
41 | "os" : "offset_step",
42 | "w" : "width",
43 | "wm" : "width_max",
44 | "ws" : "width_step",
45 | "dn" : "delay_next",
46 | "db" : "delay_boot",
47 | "dc" : "delay_check",
48 | "l" : "loops"
49 | }
50 |
51 | def prep_glitch(argd, offset, width):
52 | uptoread = {param: value[0] for param, value in teensy_rpc.DEFAULT_ARG_DICT.copy().items()}
53 | uptoread["offset"] = argd["up_to_read"]
54 | uptoread["offset_mult"] = argd["up_to_read_mult"]
55 | if argd["up_to_read_mark"] != 0:
56 | uptoread["width"] = argd["up_to_read_mark"]
57 | else:
58 | uptoread["no_driver"] = 1
59 | uptoread["trigger"] = argd["dat0"]
60 | uptoread["trigger_state"] = argd["state"]
61 | uptoread["driver"] = argd["mosfet"]
62 |
63 | glitch = {param: value[0] for param, value in teensy_rpc.DEFAULT_ARG_DICT.copy().items()}
64 | glitch["offset"] = offset
65 | glitch["offset_mult"] = argd["offset_mult"]
66 | glitch["width"] = width
67 | glitch["trigger"] = argd["dat0"]
68 | glitch["trigger_state"] = argd["state"]
69 | glitch["driver"] = argd["mosfet"]
70 | glitch["queue"] = 1
71 |
72 | if teensy_rpc.glitch_add_dfl(uptoread, max_wait=5) < 0:
73 | print("Failed to communicate with teensy, reset?")
74 | return False
75 | teensy_rpc.glitch_add_dfl(glitch)
76 | teensy_rpc.send_rpc_cmd("glitch_arm", [1])
77 | return True
78 |
79 |
80 | def try_sdboot(argd, offset, width):
81 | print("off")
82 | bert.handle_cmd("power-off", ["","",0])
83 | print("delay_boot")
84 | time.sleep(argd["delay_boot"])
85 | print("try sdboot")
86 | bert.handle_cmd("shbuf-write", ["","","00000000"])
87 | if prep_glitch(argd, offset, width) == False:
88 | print("E: failed to prep glitch")
89 | return -1
90 | bert.handle_cmd("unlock-sdboot", ["","",0])
91 | print("delay_check")
92 | time.sleep(argd["delay_check"])
93 | print("check result")
94 | bert.client.send_cmd(bytearray.fromhex("0103000000"), 0)
95 | if bert.client.get_resp().hex().upper()[10:18] == "BEBAFECA":
96 | return 1
97 | return 0
98 |
99 |
100 | def glitch_loop(argd):
101 | if teensy_rpc.send_rpc_cmd("set_clk", [600000000], max_wait=5) < 0:
102 | print("Failed to communicate with teensy, reset?")
103 | return False
104 | loopc = 0
105 | while argd["loops"] == 0 or loopc < argd["loops"]:
106 | for offset in range(argd["offset"], argd["offset_max"] + 1, argd["offset_step"]):
107 | for width in range(argd["width"], argd["width_max"] + 1, argd["width_step"]):
108 | print("try off={} width={}".format(offset, width))
109 | ret = try_sdboot(argd, offset, width)
110 | if ret == 1:
111 | print("--------------------------------------------")
112 | print("got sd boot: off={}[x{}] width={}".format(offset, argd["offset_mult"], width))
113 | print("--------------------------------------------")
114 | return True
115 | elif ret == -1:
116 | return False
117 | print("delay_next")
118 | time.sleep(argd["delay_next"])
119 | loopc += 1
120 | return False
121 |
122 | if __name__ == "__main__":
123 | if len(sys.argv) == 2 and sys.argv[1] == "help":
124 | print("\nUsage: " + sys.argv[0] + " param=value par6+val6 par3-val3 ...\n")
125 | print("Descr: " + "insert glitches during sdboot in goal of executing the flashed payload" + "\n")
126 | print(f"{'PARAM':>16}" + " : " + f"{'DEFAULT':^11}" + " : " + "DESCRIPTION")
127 | print(f"{'-----':>16}" + " : " + f"{'-------':^11}" + " : " + "-----------")
128 | for arg in DEFAULT_VARS_DICT:
129 | print(f"{arg:>16}" + " : " + f"{str(DEFAULT_VARS_DICT[arg][0]):^11}" + " : " + DEFAULT_VARS_DICT[arg][1])
130 | else:
131 | arg_dict = {param: value[0] for param, value in DEFAULT_VARS_DICT.copy().items()}
132 | for arg in sys.argv[1:]:
133 | key, val = re.split(r'[=\+\-\/\*]', arg, maxsplit=1)
134 | if key in VAR_ALIASES_DICT:
135 | key = VAR_ALIASES_DICT[key]
136 | if val.startswith('0x'):
137 | val = int(val, 16)
138 | elif '.' in val:
139 | val = float(val)
140 | else:
141 | val = int(val)
142 | if '=' in arg:
143 | arg_dict[key] = val
144 | elif '+' in arg:
145 | arg_dict[key] += val
146 | elif '-' in arg:
147 | arg_dict[key] -= val
148 | elif '*' in arg:
149 | arg_dict[key] *= val
150 | elif '/' in arg:
151 | arg_dict[key] /= val
152 | glitch_loop(arg_dict)
--------------------------------------------------------------------------------
/sdwire.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | #
4 | # sdwire.py - SDWire control script
5 | #
6 | # Copyright (c) 2024 skgleba
7 | #
8 | # This software may be modified and distributed under the terms
9 | # of the MIT license. See the LICENSE file for details.
10 | #
11 | # REQUIRES pyftdi, pyusb, libusb and/or WinUSB (Windows)
12 | #
13 |
14 | import usb.core
15 | import usb.util
16 | from pyftdi.ftdi import Ftdi
17 | from pyftdi.eeprom import FtdiEeprom
18 | import sys
19 | import argparse
20 |
21 | DEFAULT_PRODUCT = "sd-wire"
22 |
23 | def list_usb_devices(): # list all USB devices
24 | devices = usb.core.find(find_all=True)
25 | if not devices:
26 | print ("No USB devices found")
27 | return []
28 |
29 | device_list = []
30 | for device in devices:
31 | try:
32 | product = usb.util.get_string(device, device.iProduct)
33 | except Exception as e:
34 | product = "Unknown"
35 |
36 | try:
37 | serial = usb.util.get_string(device, device.iSerialNumber)
38 | except Exception as e:
39 | serial = "Unknown"
40 |
41 | device_info = f"{device.bus:03d}:{device.address:03d} | {device.idVendor:04x}:{device.idProduct:04x} | {product} | {serial}"
42 | device_list.append(device_info)
43 |
44 | return device_list
45 |
46 | def find_usb_device(product = None, serial = None, device = None, busaddr = None):
47 | if device or busaddr:
48 | search_args = {'find_all': True}
49 | if device:
50 | vid, pid = device.split(":")
51 | search_args['idVendor'] = int(vid, 16)
52 | search_args['idProduct'] = int(pid, 16)
53 | if busaddr:
54 | bus, addr = busaddr.split(":")
55 | search_args['bus'] = int(bus)
56 | search_args['address'] = int(addr)
57 | devices = usb.core.find(**search_args)
58 | else:
59 | devices = usb.core.find(find_all=True)
60 | if not devices:
61 | print ("No USB devices found")
62 | return None
63 |
64 | for device in devices:
65 | try:
66 | dev_product = usb.util.get_string(device, device.iProduct)
67 | except Exception as e:
68 | dev_product = "Unknown"
69 |
70 | try:
71 | dev_serial = usb.util.get_string(device, device.iSerialNumber)
72 | except Exception as e:
73 | dev_serial = "Unknown"
74 |
75 | if product and product != dev_product:
76 | continue
77 | if serial and serial != dev_serial:
78 | continue
79 | return device
80 |
81 | return None
82 |
83 | def set_sdwire(target, product = None, serial = None, device = None, busaddr = None):
84 | if not product and not serial and not device and not busaddr:
85 | print("looking for product string: {}".format(DEFAULT_PRODUCT))
86 | product = DEFAULT_PRODUCT
87 | sdwire_dev = find_usb_device(product=product, serial=serial, device=device, busaddr=busaddr)
88 | if not sdwire_dev:
89 | print("SDWire device not found")
90 | return
91 | try:
92 | print(f"SDWire device found: {sdwire_dev.bus:03d}:{sdwire_dev.address:03d} | {sdwire_dev.idVendor:04x}:{sdwire_dev.idProduct:04x} | {usb.util.get_string(sdwire_dev, sdwire_dev.iProduct)} | {usb.util.get_string(sdwire_dev, sdwire_dev.iSerialNumber)}")
93 | except Exception as e:
94 | print(f"SDWire device found: {sdwire_dev.bus:03d}:{sdwire_dev.address:03d} | {sdwire_dev.idVendor:04x}:{sdwire_dev.idProduct:04x}")
95 |
96 | try:
97 | ftdi = Ftdi()
98 | ftdi.open_from_device(sdwire_dev)
99 | except Exception as e:
100 | print(f"Error opening FTDI device: {e}")
101 | return
102 |
103 | print(f"Set CBUS to 0x{0xF0 | target:02X}")
104 | try:
105 | ftdi.set_bitmode(0xF0 | target, Ftdi.BitMode.CBUS)
106 | except Exception as e:
107 | print(f"Error setting CBUS: {e}")
108 |
109 | ftdi.close()
110 |
111 | def handle_cmd(args):
112 | if args.command == "list":
113 | usb_devices = list_usb_devices()
114 | print("busaddr | device | product | serial")
115 | for device in usb_devices:
116 | print(device)
117 | elif args.command == "attach":
118 | set_sdwire(0x01, product=args.product, serial=args.serial, device=args.device, busaddr=args.busaddr)
119 | elif args.command == "detach":
120 | set_sdwire(0x00, product=args.product, serial=args.serial, device=args.device, busaddr=args.busaddr)
121 | else:
122 | print(f"Unknown command: {args.command}")
123 |
124 | def main():
125 | example_usage = """Example usage:
126 | python sdwire.py list
127 | python sdwire.py attach
128 | python sdwire.py attach --serial bdgrd_sdwirec_521
129 | python sdwire.py detach --device 04e8:6001
130 |
131 | If no product, serial, device or busaddr is specified, the default product string "sd-wire" is used.
132 | """
133 | parser = argparse.ArgumentParser(description="SDWire control script", epilog=example_usage, formatter_class=argparse.RawDescriptionHelpFormatter)
134 | parser.add_argument("command", choices=["list", "attach", "detach"], help="List all USB devices or attach/detach SDWire")
135 | parser.add_argument("--product", type=str, help="Match the product string of the device")
136 | parser.add_argument("--serial", type=str, help="Match the serial number of the device")
137 | parser.add_argument("--device", type=str, help="Find by device's VendorID:ProductID")
138 | parser.add_argument("--busaddr", type=str, help="Find by device's bus:address")
139 | args = parser.parse_args()
140 | handle_cmd(args)
141 |
142 | if __name__ == "__main__":
143 | main()
--------------------------------------------------------------------------------
/tools/mkfake.c:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 | #include
6 |
7 | #define BLOCK_SIZE 0x200
8 | #define MAX_PAYLOAD_BLOCKS 0xDE
9 | #define ADDCONT_SIZE 0x20000 // additional payloads/whatever
10 | #define ALIGN_SECTOR(s) ((s + (BLOCK_SIZE - 1)) & -BLOCK_SIZE) // align (arg) to BLOCK_SIZE
11 | #define MBR_SL_OFFSZ 0x30
12 | #define DEFAULT_OUTPUT "fake.bin"
13 | #define DEFAULT_STAGE2_DEST 0x40000
14 | #define STAGE1_STAGE2_PARAMBUF 0x34 // hardcoded offset,dest,size for stage2
15 | #define STAGE1_EXTRAS_PARAMARR 0x90 // variable-length array of offset,dest,size for additional files
16 |
17 | uint32_t getSz(const char* src) {
18 | FILE* fp = fopen(src, "rb");
19 | if (fp == NULL)
20 | return 0;
21 | fseek(fp, 0L, SEEK_END);
22 | uint32_t sz = ftell(fp);
23 | fclose(fp);
24 | return sz;
25 | }
26 |
27 | int injectBytes(const char* file, uint32_t offset, const void* data, uint32_t size) {
28 | printf("INJECT 0x%X to %s @ 0x%X\n", size, file, offset);
29 | FILE* fp = fopen(file, "rb+");
30 | if (fp == NULL) {
31 | printf("could not open %s for read/write!\n", file);
32 | return -1;
33 | }
34 | fseek(fp, offset, SEEK_SET);
35 | fwrite(data, 1, size, fp);
36 | fclose(fp);
37 | return 0;
38 | }
39 |
40 | int appendBytes(const char* file, const void* data, uint32_t size) {
41 | printf("APPEND 0x%X to %s at 0x%X\n", size, file, getSz(file));
42 | FILE* fp = fopen(file, "ab");
43 | if (fp == NULL) {
44 | printf("could not open %s for append!\n", file);
45 | return -1;
46 | }
47 | fwrite(data, 1, size, fp);
48 | fclose(fp);
49 | return 0;
50 | }
51 |
52 | int readBytes(const char* file, uint32_t offset, void* data, uint32_t size) {
53 | printf("READ 0x%X from %s @ 0x%X\n", size, file, offset);
54 | FILE* fp = fopen(file, "rb");
55 | if (fp == NULL) {
56 | printf("could not open %s for read!\n", file);
57 | return -1;
58 | }
59 | fseek(fp, offset, SEEK_SET);
60 | fread(data, 1, size, fp);
61 | fclose(fp);
62 | return 0;
63 | }
64 |
65 | int copyFile(const char* src, const char* dst, uint32_t size) {
66 | if (!size)
67 | size = getSz(src);
68 | printf("COPY %s to %s [0x%X]\n", src, dst, size);
69 | void *data = malloc(size);
70 | if (!data) {
71 | printf("could not alloc 0x%X!\n", size);
72 | return -1;
73 | }
74 | FILE* src_fp = fopen(src, "rb");
75 | if (src_fp == NULL) {
76 | printf("could not open %s for read!\n", src);
77 | return -1;
78 | }
79 | fread(data, 1, size, src_fp);
80 | fclose(src_fp);
81 | FILE* dst_fp = fopen(dst, "wb");
82 | if (dst_fp == NULL) {
83 | printf("could not open %s for write!\n", dst);
84 | return -1;
85 | }
86 | fwrite(data, 1, size, dst_fp);
87 | fclose(dst_fp);
88 | free(data);
89 | return 0;
90 | }
91 |
92 | int main(int argc, char* argv[]) {
93 | if (argc < 2) {
94 | printf("Usage: %s [PAYLOAD] <-o OUTPUT> <-ia BASE|-ir BASE> <-a FILE> <-s FILE DEST>\n", argv[0]);
95 | printf(" [PAYLOAD] - payload path\n");
96 | printf(" -o OUTPUT - output path\n");
97 | printf(" -ir BASE - replace existing\n");
98 | printf(" -ia BASE - append after base, inject header\n");
99 | printf(" -a FILE - append file\n");
100 | printf(" -s FILE - append file and set its params in stage1\n");
101 | printf("Before adding/injecting/appending, each file is padded to 0x%X\n\n", ADDCONT_SIZE);
102 | return -1;
103 | }
104 |
105 | // parse args
106 | char *output = DEFAULT_OUTPUT;
107 | char *base = NULL;
108 | char *appends[16];
109 | uint32_t appends_dest[16];
110 | memset(appends, 0, sizeof(appends));
111 | memset(appends_dest, 0, sizeof(appends_dest));
112 | int append_count = 0;
113 | int replace = 0;
114 | for (int i = 2; i < argc; i++) {
115 | if (!strcmp(argv[i], "-o")) {
116 | if (i + 1 < argc) {
117 | output = argv[i + 1];
118 | i++;
119 | }
120 | } else if (!strcmp(argv[i], "-ir")) {
121 | if (i + 1 < argc) {
122 | base = argv[i + 1];
123 | replace = 1;
124 | i++;
125 | }
126 | } else if (!strcmp(argv[i], "-ia")) {
127 | if (i + 1 < argc) {
128 | base = argv[i + 1];
129 | i++;
130 | }
131 | } else if (!strcmp(argv[i], "-a")) {
132 | if (i + 1 < argc) {
133 | appends[append_count] = argv[i + 1];
134 | append_count++;
135 | i++;
136 | }
137 | } else if (!strcmp(argv[i], "-s")) {
138 | if (i + 1 < argc) {
139 | appends[append_count] = argv[i + 1];
140 | // check if there is a dest offset given, should start with 0x
141 | if (i + 2 < argc) {
142 | if (argv[i + 2][0] == '0' && argv[i + 2][1] == 'x') {
143 | appends_dest[append_count] = strtol(argv[i + 2], NULL, 16);
144 | i++;
145 | }
146 | }
147 | if (!appends_dest[append_count])
148 | appends_dest[append_count] = DEFAULT_STAGE2_DEST;
149 | append_count++;
150 | i++;
151 | }
152 | }
153 | }
154 |
155 | if (!argv[1]) {
156 | printf("no input set!\n");
157 | return -1;
158 | }
159 |
160 | uint32_t code_sz = getSz(argv[1]);
161 | if (!code_sz || (code_sz > (MAX_PAYLOAD_BLOCKS * BLOCK_SIZE))) {
162 | printf("invalid payload size!\n");
163 | return -1;
164 | }
165 |
166 | uint32_t payload_loc[2]; // [0] = offset, [1] = size [in blocks]
167 | payload_loc[0] = 1;
168 | // payload_loc[0] = -1; // crash
169 | payload_loc[1] = MAX_PAYLOAD_BLOCKS;
170 | // payload_loc[1] = (ALIGN_SECTOR(code_sz) / BLOCK_SIZE);
171 |
172 | if (base) {
173 | uint32_t base_sz = getSz(base);
174 | if (!base_sz) {
175 | printf("invalid base size!\n");
176 | return -1;
177 | }
178 | base_sz = ALIGN_SECTOR(base_sz);
179 | if (copyFile(base, output, base_sz))
180 | return -1;
181 | if (replace) {
182 | if (readBytes(output, 0x30, payload_loc, 8))
183 | return -1;
184 | if ((payload_loc[0] > (base_sz / BLOCK_SIZE)) || ((payload_loc[0] + payload_loc[1]) > (base_sz / BLOCK_SIZE))) {
185 | printf("invalid payload location!\n");
186 | return -1;
187 | }
188 | } else
189 | payload_loc[0] = (base_sz / BLOCK_SIZE);
190 | }
191 |
192 | void* full_va = malloc(ADDCONT_SIZE);
193 | if (!full_va) {
194 | printf("could not alloc 0x%X!\n", ADDCONT_SIZE);
195 | return -1;
196 | }
197 |
198 | // create/replace the payload
199 | int ret = 0;
200 | memset(full_va, 0, ADDCONT_SIZE);
201 | memcpy(full_va + 0x30, payload_loc, 8);
202 | if (readBytes(argv[1], 0, full_va + BLOCK_SIZE, code_sz))
203 | return -1;
204 | if (base) {
205 | if (injectBytes(output, 0x30, payload_loc, 8))
206 | return -1;
207 | if (replace)
208 | ret = injectBytes(output, payload_loc[0] * BLOCK_SIZE, full_va + BLOCK_SIZE, (payload_loc[1] * BLOCK_SIZE));
209 | else
210 | ret = appendBytes(output, full_va + BLOCK_SIZE, (payload_loc[1] * BLOCK_SIZE));
211 | } else
212 | ret = appendBytes(output, full_va, ADDCONT_SIZE);
213 | if (ret)
214 | return -1;
215 |
216 | // append additional files
217 | uint32_t s1load_params[3]; // img_offset (blocks), memory_dest, size (blocks)
218 | for (int i = 0; i < append_count; i++) {
219 | memset(full_va, 0, ADDCONT_SIZE);
220 | uint32_t sz = getSz(appends[i]);
221 | if (!sz) {
222 | printf("invalid append %s size!\n", appends[i]);
223 | return -1;
224 | }
225 | if (sz > ADDCONT_SIZE) {
226 | printf("append %s too big!\n", appends[i]);
227 | return -1;
228 | }
229 | if (readBytes(appends[i], 0, full_va, sz))
230 | return -1;
231 | if (appends_dest[i]) {
232 | if (getSz(output) % BLOCK_SIZE) {
233 | printf("cannot append stage2 to non-block-aligned image!\n");
234 | return -1;
235 | }
236 | s1load_params[0] = getSz(output) / BLOCK_SIZE;
237 | s1load_params[1] = appends_dest[i];
238 | s1load_params[2] = (ALIGN_SECTOR(sz) / BLOCK_SIZE);
239 | if (s1load_params[1] == DEFAULT_STAGE2_DEST) {
240 | if (injectBytes(output, (payload_loc[0] * BLOCK_SIZE) + STAGE1_STAGE2_PARAMBUF, s1load_params, 0xC))
241 | return -1;
242 | } else {
243 | // find the first free entry in the array
244 | uint32_t tmp[6];
245 | memcpy(tmp, s1load_params, 0xC);
246 | for (int x = 0; x < 0x10; x++) {
247 | if (readBytes(output, (payload_loc[0] * BLOCK_SIZE) + STAGE1_EXTRAS_PARAMARR + (x * 0xC), &tmp[3], 0xC))
248 | return -1;
249 | if (tmp[3] == 0xFFFFFFFF) {
250 | if (injectBytes(output, (payload_loc[0] * BLOCK_SIZE) + STAGE1_EXTRAS_PARAMARR + (x * 0xC), tmp, 2 * 0xC))
251 | return -1;
252 | break;
253 | }
254 | }
255 | }
256 | }
257 | if (appendBytes(output, full_va, ADDCONT_SIZE))
258 | return -1;
259 | }
260 |
261 | free(full_va);
262 |
263 | printf("all done!\n");
264 | }
--------------------------------------------------------------------------------
/tools/snvs.py:
--------------------------------------------------------------------------------
1 | from Crypto.Cipher import AES
2 | from Crypto.Hash import CMAC
3 | import sys
4 |
5 | def xor(data, tweak):
6 | return bytes([a ^ b for a, b in zip(data, tweak)])
7 |
8 | def aes_xts_sector(sector, key, idx, encrypt):
9 | cipher = AES.new(key[:16], AES.MODE_ECB)
10 | tweak_cipher = AES.new(key[16:], AES.MODE_ECB)
11 |
12 | output_blocks = []
13 |
14 | tweak = tweak_cipher.encrypt(idx.to_bytes(16, byteorder='little'))
15 | if encrypt == True:
16 | output_blocks.append(xor(cipher.encrypt(xor(sector[0:16], tweak)), tweak))
17 | else:
18 | output_blocks.append(xor(cipher.decrypt(xor(sector[0:16], tweak)), tweak))
19 |
20 | tweak = int.from_bytes(tweak, byteorder='little')
21 | tweak = ((tweak << 1) & (2**128 - 1)) ^ (135 if tweak >> 127 else 0)
22 | tweak = tweak.to_bytes(16, byteorder='little')
23 | if encrypt == True:
24 | output_blocks.append(xor(cipher.encrypt(xor(sector[16:32], tweak)), tweak))
25 | else:
26 | output_blocks.append(xor(cipher.decrypt(xor(sector[16:32], tweak)), tweak))
27 |
28 | return b''.join(output_blocks)
29 |
30 |
31 | if __name__ == "__main__":
32 | if len(sys.argv) != 6:
33 | print("usage: " + sys.argv[0] + " [encrypt/decrypt/cmac] ")
34 | else:
35 | mode = sys.argv[1]
36 | key = bytes.fromhex(sys.argv[2])
37 | sector_idx = int(sys.argv[3], 16)
38 | with open(sys.argv[4], 'rb') as f:
39 | input = f.read()
40 |
41 | if mode == "cmac":
42 | cmac = bytearray.fromhex(CMAC.new(key[:16], ciphermod=AES).update(bytes(bytearray(input[(sector_idx * 0x20):((sector_idx * 0x20) + 0x10)]) + bytearray(0x30))).hexdigest())
43 | output = bytearray(input)
44 | for i in range(0x10):
45 | output[(sector_idx * 0x20) + 0x10 + i] = cmac[i]
46 | with open(sys.argv[5], 'wb') as f:
47 | f.write(output)
48 | else:
49 | output_sectors = []
50 |
51 | for i in range(sector_idx * 0x20, len(input), 0x20):
52 | output_sectors.append(aes_xts_sector(input[i:(i + 0x20)], key, sector_idx + (i // 0x10), mode == "encrypt"))
53 |
54 | output = b''.join(output_sectors)
55 |
56 | with open(sys.argv[5], 'wb') as f:
57 | f.write(output)
58 |
--------------------------------------------------------------------------------
/wiring/n_mos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SKGleba/psp2sdboot/9a9173bc28723fe1de72f6bb5811087be0cd50f1/wiring/n_mos.png
--------------------------------------------------------------------------------
/wiring/wires-pch1k.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SKGleba/psp2sdboot/9a9173bc28723fe1de72f6bb5811087be0cd50f1/wiring/wires-pch1k.png
--------------------------------------------------------------------------------
/wiring/wires-vte-back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SKGleba/psp2sdboot/9a9173bc28723fe1de72f6bb5811087be0cd50f1/wiring/wires-vte-back.png
--------------------------------------------------------------------------------
/wiring/wires-vte-front.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SKGleba/psp2sdboot/9a9173bc28723fe1de72f6bb5811087be0cd50f1/wiring/wires-vte-front.png
--------------------------------------------------------------------------------
/wiring/wiring.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SKGleba/psp2sdboot/9a9173bc28723fe1de72f6bb5811087be0cd50f1/wiring/wiring.png
--------------------------------------------------------------------------------