elly
Posts may contain traces of:
- Mainline Linux development (x86/x86_64, ARMv7/ARM64).
- Linux distributions such as: Alpine, Chimera, Fedora, Gentoo, Nura.
- Legacy UNIXes, possibly BSDs.
- Firmware development (coreboot, U-Boot) and everything related to it.
- Designing hardware and discussing interfaces like SPI, I2C, SWD/JTAG etc.
- General hardware (and software!) hacking and reverse-engineering.
- Screaming at digital enshitiffication.
- Memes, possibly doodles.
Posts are certified to be gluten-free. Please consult your doctor in case of other allergies.
While main posting language is "English", occasional "日本語", "Deutsch", or "Polski" might also appear.
Any opinions expressed in the process of "posting" belong solely to the account's owner (blah, blah).
We now have:
1. U-Boot (Tauchgang) 2026.04
- Pretty much everything working except for UFS
- According to logs I need to write SM8250 interconnect driver for that
2. Linux 7.0.1
- sm8250-mainline tree was an unmaintainable disaster and it's abandoned
- Straight from kernel.org with not-yet-upstreamed patches for pm8150b-charger, devicetree for this device and initial panel driver
- Working WiFi/BT, UFS, MicroSD, USB3.1 Gen... uuuh, whatever SoC supports, charging (but it's flaky)
Some stuff that I need to figure out:
1. Possibly mark boot as successful with qbootctl, currently we get 6 boots and get dropped into fastboot where we need to re-flash u-boot.
2. How to make fan work, charging currently stops after ~15 minutes because SoC reaches 75*C. It also doesn't negotiate higher PD profile (5V/3A max) so that needs more work.
3. Decode downstream DSI init sequence, as DSC is kicking my butt despite having display datasheets.
4. How the heck volume buttons are connected, they're not controlled by GPIO nor PMIC :blobcat_bonk_googly_large_trout:
Pretty sure we can get audio and cameras working as well, need to pull files for hexagonrpcd to serve from Android, as currently CDSP/SLPI are crashing (though not sure if we can use hand-tracking model running on Compute DSP in mainline, probably not).
Even if you get a kernel source from $vendor (which is not a given, welcome to the magical land of GPL violation) you will run into numerous issues even trying to compile it, only to end up with a pile of legacy crap that will never* work correctly with upstream userspace (unless you resort to using Ubuntu Touch or Droidian, which AFAIK use halium and can use Android HALs).
Seriously, if you're new to this and want to learn how to do it *properly* on a completely unsupported SoC, you should:
1. Dump downstream devicetree from running device. It's much easier to understand than vendor sources once you understand how it works: `dtc -I dtb /sys/firmware/fdt -O dts > /storage/emulated/0/Downloads/dumped.dts` (and pull it using adb).
2. Locate UART pins on your device (beware that most ARM SoCs use 1.8V or under) and what's the address for that (for example on MT6789/MT8781 it's `0x11002000`). Using simple-framebuffer is a last resort but you really want functional UART for early bringup.
3. Write initial upstream devicetree and minimal driver set. You more-or-less need the following to get into initramfs:
- Clocks
- Core cluster definition (in DT)
- Possibly reserved-memory (memory regions that shouldn't be used, often used by modem/wifi, gpu, remoteprocs etc)
- Interrupt Controller (usually ARM GICv3 unless it's Apple, then AIC)
- Pinctrl
- UART
*(Hopefully not forgetting about anything?)*
4. Go from there (drivers for interconnect, i2c/spi etc).
Using kernel trees for the same SoC (even if it's a different vendor) is a protip, it's all $soc_vendor's BSP after all. Or if you're in really deep, throwing kernel modules at ghidra is also an option
First time in Netherlands ![]()
One of the first impressions:
- Look, this guy is overtaking tram on a bike
- Something something weakest Dutch cyclist or something
First it was PCIe, then random (sporadic) lockups every ~month or so, then issues with USB controller, then iGPU and then lockups became so frequent that it became unusable (2 - 3 per day). AMDGPU issues might even be related to this.
Cleaned the system and put it together, but I expect it to crash while I will be sleeping... so I guess it's time to look for a normal motherboard and CPU (thankfully I can get used MSI DDR4 board which doesn't have BootGuard and 14Gen i5 for roughly ~300EUR and it's going to be 20% faster than the current setup as well).
This concludes a 3 year-old experiment, if you're thinking of buying cheap pre-production hardware that fell from the back of the truck in China: Don't. It's funny at first, but save yourself the headache.
EDIT: It already crashed, it lasted 2 hours and 44 minutes
Just got another funny/silly idea... which one would be more cursed?
Apparently they sent a DMCA to someone working on cloud integration in OrcaSlicer. Not something I would use, but it just... pisses me off (especially because I'm waiting for A1 to arrive myself).
Started looking into it, based on pictures I see:
Mainboard:
- Spintrol SPC2168 (Dual-core Cortex-M4)
- ESP32-S3
- GigaDevice 25Q128ESIG
- 4x stepper motor controller under the heatsink?
TH board:
- Spintrol 50KB (Cortex-M4)
- 2x ZHONGKEWEI AT8236
Looks to be similar to other models made by them, as documented under:
https://github.com/opensourcemanufacturing/OpenBL/
While ARM MCUs have OTP, worst-case they can easily be replaced with STM32 equivalent thanks to LQFP packages.
Firmware on bambu's website looks to be encrypted (lol, lmao), but dumping it from device in hand (when I'll receive my printer) should solve that problem.
Those files also are self-describing if we look at the board and amount of flash space available:
- AMS: Didn't look into it (and didn't buy one), but it's under 100KB so AMS likely also has a SPC1168APE MCU in it
- AP-ES3: Juicy, easy target. It's 4.9MB in size, so it must live in the SPI flash and store firmware that ESP32-S3 is running.
- AP-HMS: Based on image files in the folder and 700KB size, this is likely firmware that SPC2168 is running and controls the display in front of the device.
- MC: Purely a speculation, maybe for the built-in camera?
- N3F/N3S/N2S: No idea, possibly an NFC chip?
- TH: 50KB, running on SPC1168APE
Pinout can be beeped-out, all you need are GPIOs for motor controllers anyway. Display would be a bit trickier, but oscilloscope solves that problem just fine. Besides, the MCU doesn't have MIPI or anything of sort so it's likely just an SPI for display and I2C/SPI for touchscreen
- Does alpine not have nested virtualization for it's test runners?
- What now runners?
- Does alpine not have testing infra?
- They do (it is @fossdd@chaos.social laptop) /j
Back in 2024 I bought the fastest, most expensive card I ever had (~500EUR), it started crashing last summer and memory was idling at 70*C. It got better during the winter, but recently (before my motherboard died) it got worse.
Never had to replace thermopads before (even on 10 year-old cards they usually were fine), so I'd appreciate any tips.
I'm currently assembling a new workstation, thanks to friends ( @BluRaf@donotsta.re, @TadeusTaD@donotsta.re, @Remiberry@donotsta.re, @dragoonaethis@mstdn.social ) I was able to afford an LGA1700 DDR4 motherboard (there's no way I'm buying DDR5 in current market conditions even if it costs a fair bit of performance) and i9-14900K which will also be ~50% faster than Erying with ES i9-11980HK that... disintegrated.
Over the past 2 weeks I tested all components from my (dead) workstation, with following results:
- Heatsink: Bent in shipping (thanks LaPoste), will use a publicly-accessible vice in OBI to strengthen it. It should be able to handle this CPU.
- Seasonic 620W: Works perfectly, dusted it off and swapped a new fan in
- 32GB of DDR4 I bought back in 2023: Works without XMP enabled, but instability at 3200MHz might be caused by either bad board design or heatwave.
- SSDs/HDDs: Perfectly fine, I got all of my data uncorrupted.
- GPU (Sapphire RX7800XT Pulse): Overheats even at idle (bad fan profile), fan control doesn't work (even though it was supposed to). Opened it up to find completely dry thermal paste and thermopads crumbling if touched.
Measuring current pads (obviously squished) with calipers gave me following results:
- Backplate -> PCB (above VRAM): 3.3mm
- VRAM -> heatsink: 1.8mm
- VRM: 2mm
Should I just order the same thickness, or do they have to be slightly thicker (since heatsink should compress them)?
Thanks! :neocat_heart:
While motorola-vicky is hard-bricked (waiting for UFS controller and tools to remove uMCP from the board to arrive from China), I wanted to start upstreaming patches for xiaomi-pyxis.
However, I’m still not sure how to handle the touchscreen problem. I’m confident that this patch would break SHIFT6mq (shift-axolotl) which is using the same Focaltech FT5452 touchscreen, but with firmware configured for 5-point touch.
Any owners of SHIFT6mq running #postmarketos that want to (potentially, temporairly) break their touchscreens by testing a patch for me?
If this breaks, I will simply split FT5452 into 5 and 10-point compatible, but I’m frankly baffled this is necessary at all. Might be a hot take, but downstream does it better by specifying it in the devicetree.
drivers/input/touchscreen/edt-ft5x06.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index bf498bd4dea9..5cb2f7aafbb1 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -1476,7 +1476,7 @@ static const struct edt_i2c_chip_data edt_ft5x06_data = {
};
static const struct edt_i2c_chip_data edt_ft5452_data = {
- .max_support_points = 5,
+ .max_support_points = 10,
};
static const struct edt_i2c_chip_data edt_ft5506_data = {
Thanks! :neocat_heart:
- Mommy, mommy, how do chips get made?
- Oh, you see honey, when two vendors like each other very much...