Giter VIP home page Giter VIP logo

jglathe / linux_ms_dev_kit Goto Github PK

View Code? Open in Web Editor NEW

This project forked from merckhung/linux_ms_dev_kit

19.0 4.0 1.0 4.93 GB

Linux kernel source tree for Windows Dev Kit 2023

License: Other

Shell 0.35% C++ 0.03% Python 0.18% Perl 0.10% C 98.25% Clojure 0.01% Assembly 0.80% MATLAB 0.01% Rust 0.05% Awk 0.01% UnrealScript 0.01% Makefile 0.20% XS 0.01% Yacc 0.01% Lex 0.01% M4 0.01% Roff 0.02% Gherkin 0.01% sed 0.01% SmPL 0.01%

linux_ms_dev_kit's Introduction

Current tip of the development: jg/ubuntu-blackrock-v6.10.y, now based on steev/linux, cross checked against jhovold/linux and torvalds/linux

Recent Changes

  • Build system has changed to Ubuntu-Mainline, including devkit_defconfig adapted to Ubuntu distro standards. Latest is 6.10.0, working nicely.
  • There is a branch for el2 (providing /dev/kvm suport), running 24/7 on another wdk.
  • There is also a branch for pop-os using the pop build system. Since 24.04 is still pre-alpha, running when I want to see the state of things 😁 I also have a tree for the ISO builder, giving a bootable installer ISO for Pop!_OS.
  • flash-kernel is now supported. Windows Dev Kit 2023 is not in the database, the required entries are in the wdk2023-syshacks repository. This works really well IMO, it makes you forget that there is some dtb handling required. It also works in combination with grub and systemd-boot (although systemd-boot might be quite a PITA on the WDK).
  • Wireless (WCN6855) firmware has been updated to .41, with a new board-2.bin to also include a working calibration set for the WDK. This is newer than what linux-firmware has. I'm trying to get the calibration upstream.
  • QSEECOM is enabled in the kernel, enabling efivars.

Bootable Image

Preinstalled desktop images live here. The latest is Ubuntu 24.04 with kernel 6.10 for wdk2023. Sometimes images for the Lenovo Thinkpad X13s are available, too. They can be written with the disks utility or Balena Etcher or Rufus (or dd for the adventurous) onto an USB stick or external SSD, and booted.

There are some special properties:

  • The first boot will try to copy device-specific firmwares (*8280.mbn) from the Windows installation of the internal nvme if it is accessible. Aferwards, it reboots once.
  • The image comes up with the Ubiquity installer. Should work well enough.

The image is tested for the use case that the local Windows installation is accessible, might balk a lot if this is not the case. For operation reasons I would recommend to keep the installation. It helps with resetting the power management after a failed boot with Linux, and you get the newest firmware when available through Windows Update.

Kernel packages

Since installing / removing kernels is now only a use of apt and dpkg, pre-built package sets are available here. I publish them occasionally, after some testing here.

Acknowledgements

The original tutorial from @chenguokai can be found here

linux_ms_dev_kit's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

mingkwind

linux_ms_dev_kit's Issues

Running from USB-C: Filesystem breaks when entering suspend

When booting from the image and running the rootfs on an USB-C port, regardless if you're behind a (powered) hub or not: When the system goes into suspend, the root filesystem becomes unoperable (readonly).
Probable cause: Some lack in the power management. There are some messages in dmesg that say not everything is working:

[    2.049181] qcom_pmic_glink pmic-glink: Failed to create device link (0x180) with usb0-sbu-mux
[    2.056263] qcom_pmic_glink pmic-glink: Failed to create device link (0x180) with usb1-sbu-mux
[    2.230842] qcom_pmic_glink pmic-glink: Failed to create device link (0x180) with a600000.usb
[    2.248853] qcom_pmic_glink pmic-glink: Failed to create device link (0x180) with ae90000.displayport-controller
[    2.251678] qcom_pmic_glink pmic-glink: Failed to create device link (0x180) with ae98000.displayport-controller
[    2.944111] qcom_pmic_glink pmic-glink: Failed to create device link (0x180) with a800000.usb

usb0-sbu-mux and usb1-sbu-mux are USB-C, like a600000.usb and a800000.usb are. Funnily enough, USB2 (a400000.usb) which is 3x USB-A and the internal RTL8152 GbE-Port doesn't have this issue, and it works with suspend as expected.

Bluetooth won't come up on Mantic (23.10)

Some strange behaviour with btmgt on 23.10. Runs fine from the cli, also in scripts, but refuses to run from udev or systemd. With no response given. Since it worked with 23.04, I guess it's a regression, since it has happened before. Anyway, this commit in wdk2023_syshacks switches to using crontab as something that works™️in this case. Here's how to go about it:

  1. clone the wdk2023_syshacks repo and check out this commit
  2. create a crontab entry with sudo crontab -e: @reboot sleep 10 && /usr/local/bin/set-bluetooth-address.sh - or - merge the crontab file: /var/spool/cron/crontabs/root
  3. disable the systemd unit: sudo systemctl disable set-bluetooth-address
  4. (optional) copy over the current set-bluetooth-address.sh: sudo cp usr/local/bin/set-bluetooth-address.sh /usr/local/bin/

After that and a reboot, Bluetooth should start working again after the bootup. Special thanks to phind.com for grinding through the options with me.

Thermal issues when compiling big things

Not the first time I see this, but it's a stability issue: wdk thermal profile appears to be not attuned to the wdk. Of course, it's taken from the x13s and not amended yet. Usually you won't notice, but with compiling bigger packages like the linux kernel or llvm (for gunyah docker image), you get crashes with read-only filesystem and other ones. Usually no hard crashes, but that's not far from it.

To avoid these issues my recommendation for now is to reduce the number of cores/threads used for build work to 4. This has the additional effect of using only the high performance cores of the SoC. Of ourse it increaeses build times, but the box stays stable that way.

USB saturation on disk access

Seen some odd behaviour when accessing nvme SSD's via USB. The access appears to be not optimal speed, a large copy (100GB?) will level out at ~30..50 MB/s. That's not very fast. Some observations:

  • the file transfer works, the files are consistent and have no erroneous data in it.
  • other hardware on these (any) HCI interfaces appears to get starved. I had janky mouse, missing keystrokes (what???), breakdown of the rtl8152 NIC interface, no responses to pull/plug events, sluggish dmesg -w updating.
  • no real errors (except from the starving network driver) are shown
  • all HCI interfaces appear to be affected, if one's saturated, USB is saturated
  • htop shows one core (core 0) completely in kernel time
  • all this stops the moment the transfer is over, networking comes back, too

This needs to be investigated, appears to be a bottleneck.

EL2: No video output

root@wdk2023:~# cat /etc/armbian-grub-with-dtb 
BOOT_FDT_FILE="qcom/sc8280xp-microsoft-dev-kit-2023.dtb"

Armbian using sc8280xp-microsoft-dev-kit-2023.dtb as dtb file name, modify it then u can compile kernel to deb and use apt install it directly

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.