V3 board is assembled and verified working. It’s funny v3 boards arrived before v2. Some speculative production is assumed
Assembled module
Finally got the correct USB connectors (called 90度沉板USB接口 in Chinese, while I still haven’t figured out the English term) and TXS0102 MSOP version.
Put together with a reflow station, the board is much cleaner than last time.
The only problem is that I almost blew up the power management chip: C14 (above UART chip) accidentally shorts 5V to GND, causing PMU to scream even crazier than it usually does.
There’s not a lot going on in the back:
The speaker POGO pads are hand-drawn with a semi-transparent kicad session and the OG ext board dxf window aligned in the back.
The analog switches are driven with a 2-seat dip switch:
which will re-route and align pins for different core boards.
Putting it together:
I have to cut a bit from back plate to expose the DEBUG port:
Double-cheeseburger microUSB:
Edit: if I were not stupid, I’d put microusb on the other side
Putting it back:
Cart connector ready for action:
3 devices detected on i2c-2 (A06):
Custom device tree mods:
/{
...
pwm_fan: pwm-fan {
compatible = "pwm-fan";
#cooling-cells = <2>;
pwms = <&gp7101 0 255 0>; // <phandle pwm_id period inverted
cooling-levels = <0 10 30 50 70 90 110>;
};
};
&i2c2 {
clock-frequency = <100000>;
i2c-scl-rising-time-ns = <1000>;
i2c-scl-falling-time-ns = <300>;
status = "okay";
mcp23008: gpio@20 {
compatible = "microchip,mcp23008";
gpio-controller;
#gpio-cells = <2>;
reg = <0x20>; // change this if JP1-JP3 are soldered otherwise
// XXX IRQ not hooked up
};
ds1307: rtc@68 {
compatible = "maxim,ds1307";
reg = <0x68>;
};
gp7101: pwm@58 {
compatible = "guestgood,gp7101-pwm";
reg = <0x58>;
#pwm-cells = <2>;
};
};
(wrote a custom driver for gp7101)
Thermal zone tripping points:
&cpu_thermal {
trips {
cpu_active0: cpu_active0 {
temperature = <45000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "active";
};
cpu_active1: cpu_active1 {
temperature = <50000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "active";
};
cpu_active2: cpu_active2 {
temperature = <55000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "active";
};
cpu_active3: cpu_active3 {
temperature = <58000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "active";
};
cpu_active4: cpu_active4 {
temperature = <62000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "active";
};
cpu_active5: cpu_active5 {
temperature = <65000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "active";
};
};
cooling-maps {
map0 {
trip = <&cpu_active0>;
cooling-device = <&pwm_fan 0 1>;
};
map1 {
trip = <&cpu_active1>;
cooling-device = <&pwm_fan 1 2>;
};
map2 {
trip = <&cpu_active2>;
cooling-device = <&pwm_fan 2 3>;
};
map3 {
trip = <&cpu_active3>;
cooling-device = <&pwm_fan 3 4>;
};
map4 {
trip = <&cpu_active4>;
cooling-device = <&pwm_fan 4 5>;
};
map5 {
trip = <&cpu_active5>;
cooling-device = <&pwm_fan 5 6>;
};
};
};
Repo
Here’s the repository of v3/v4:
Path | Desc |
---|---|
DevTermCaseTemp.kicad_pro | v3 |
DevTermCaseTemp_v4.kicad_pro | v4 wip |
devterm-ext-outline | useful graphics assets + footprint + 3d models (most important one is the cart connector from @fip) |
mpcie.pretty | ext board template from @Carton9 (KiCAD 6 DevTerm Printer Module Template) |
masked-text.svg | Template to create clockwork style silkscreen labels |