├── 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 | ![wiring](wiring/wiring.png) 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 | ![LA view](pics/laview-cutoff.png) 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 | ![LA view](pics/laview-uptoread.png) 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 | ![Memory Layout](pics/sdboot_sram.png) 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 --------------------------------------------------------------------------------