EXT Cartridge Module

V3 board is assembled and verified working. It’s funny v3 boards arrived before v2. Some speculative production is assumed :stuck_out_tongue:

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):
image

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
8 Likes