denysvitali / linux-on-pixel-c Goto Github PK
View Code? Open in Web Editor NEWDocumentation on how to run a Linux Distro on the Google Pixel C (2015)
License: MIT License
Documentation on how to run a Linux Distro on the Google Pixel C (2015)
License: MIT License
Currently the Bluetooth / Wi-Fi chip doesn't seem to power on, my assumption is that there is a GPIO control somewhere
Sound deosn't work: I'm pretty sure some files in the kernel source are missing. We probably need to copy them over from linux-tegra and enable the related options
I'm pretty sure it is an error caused by libevent, that doesn't recognize the Power, Vol +, Vol - events.
Apparently they work in GNOME (or they were working at some point).
GPIO:
[root@pixel-c ~]# cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 0-255, parent: platform/6000d000.gpio, tegra-gpio:
gpio-12 ( |Lid ) in hi IRQ
gpio-83 ( |PP1800_CAM ) out lo
gpio-100 ( |Volume Up ) in hi IRQ
gpio-169 ( |jdi-enable ) out hi
gpio-170 ( |jdi-reset ) out hi
gpio-171 ( |PP1800_LCDIO ) out hi
gpio-172 ( |PPLCD_VDD ) out hi
gpio-189 ( |Power ) in hi IRQ
gpio-191 ( |Volume Down ) in hi IRQ
gpio-202 ( |Tablet Mode ) in hi IRQ
Evtest output
Testing ... (interrupt to exit)
Event: time 1502312217.717873, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 1
Event: time 1502312217.717873, -------------- SYN_REPORT ------------
Event: time 1502312217.907894, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 0
Event: time 1502312217.907894, -------------- SYN_REPORT ------------
Event: time 1502312219.631962, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 1
Event: time 1502312219.631962, -------------- SYN_REPORT ------------
Event: time 1502312219.813930, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 0
Event: time 1502312219.813930, -------------- SYN_REPORT ------------
Event: time 1502312222.179026, type 1 (EV_KEY), code 116 (KEY_POWER), value 1
Event: time 1502312222.179026, -------------- SYN_REPORT ------------
Connection to 192.168.1.80 closed by remote host.
Connection to 192.168.1.80 closed.
Documented here
Currently Linux on Pixel C is missing GPU Acceleration, therefore the UI is laggy
dmesg is available here
[root@alarm /]# cat /var/log/Xorg.0.log
[ 899.733]
X.Org X Server 1.19.3
Release Date: 2017-03-15
[ 899.733] X Protocol Version 11, Revision 0
[ 899.733] Build Operating System: Linux 3.14.65-16-ARCH aarch64
[ 899.733] Current Operating System: Linux alarm 4.13.0-rc4+ #13 SMP PREEMPT Wed Aug 9 20:46:38 UTC 2017 aarch64
[ 899.733] Kernel command line: cros_secure vpr=0x08000000@0xf6800000 earlycon
[ 899.733] Build Date: 13 August 2017 04:10:10PM
[ 899.733]
[ 899.733] Current version of pixman: 0.34.0
[ 899.733] Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
[ 899.733] Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[ 899.733] (==) Log file: "/var/log/Xorg.0.log", Time: Wed Aug 16 12:00:35 2017
[ 899.734] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[ 899.734] (==) No Layout section. Using the first Screen section.
[ 899.734] (==) No screen section available. Using defaults.
[ 899.734] (**) |-->Screen "Default Screen Section" (0)
[ 899.734] (**) | |-->Monitor "<default monitor>"
[ 899.734] (==) No monitor specified for screen "Default Screen Section".
Using a default monitor configuration.
[ 899.734] (==) Automatically adding devices
[ 899.734] (==) Automatically enabling devices
[ 899.734] (==) Automatically adding GPU devices
[ 899.734] (==) Automatically binding GPU devices
[ 899.734] (==) Max clients allowed: 256, resource mask: 0x1fffff
[ 899.734] (WW) The directory "/usr/share/fonts/Type1/" does not exist.
[ 899.734] Entry deleted from font path.
[ 899.734] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/100dpi/".
[ 899.734] Entry deleted from font path.
[ 899.734] (Run 'mkfontdir' on "/usr/share/fonts/100dpi/").
[ 899.734] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/75dpi/".
[ 899.734] Entry deleted from font path.
[ 899.734] (Run 'mkfontdir' on "/usr/share/fonts/75dpi/").
[ 899.734] (==) FontPath set to:
/usr/share/fonts/misc/,
/usr/share/fonts/TTF/,
/usr/share/fonts/OTF/
[ 899.734] (==) ModulePath set to "/usr/lib/xorg/modules"
[ 899.734] (II) The server relies on udev to provide the list of input devices.
If no devices become available, reconfigure udev or disable AutoAddDevices.
[ 899.734] (II) Loader magic: 0x1207d4d20
[ 899.734] (II) Module ABI versions:
[ 899.734] X.Org ANSI C Emulation: 0.4
[ 899.734] X.Org Video Driver: 23.0
[ 899.734] X.Org XInput driver : 24.1
[ 899.734] X.Org Server Extension : 10.0
[ 899.736] (++) using VT number 7
[ 899.736] (II) systemd-logind: logind integration requires -keeptty and -keeptty was not provided, disabling logind integration
[ 899.737] (II) xfree86: Adding drm device (/dev/dri/card0)
[ 899.742] (II) no primary bus or device found
[ 899.742] falling back to /sys/devices/platform/50000000.host1x/drm/drm/card0
[ 899.742] (II) LoadModule: "glx"
[ 899.742] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[ 899.751] (II) Module glx: vendor="X.Org Foundation"
[ 899.751] compiled for 1.19.3, module version = 1.0.0
[ 899.751] ABI class: X.Org Server Extension, version 10.0
[ 899.751] (==) Matched modesetting as autoconfigured driver 0
[ 899.751] (==) Matched fbdev as autoconfigured driver 1
[ 899.751] (==) Assigned the driver to the xf86ConfigLayout
[ 899.751] (II) LoadModule: "modesetting"
[ 899.751] (II) Loading /usr/lib/xorg/modules/drivers/modesetting_drv.so
[ 899.751] (II) Module modesetting: vendor="X.Org Foundation"
[ 899.751] compiled for 1.19.3, module version = 1.19.3
[ 899.751] Module class: X.Org Video Driver
[ 899.751] ABI class: X.Org Video Driver, version 23.0
[ 899.752] (II) LoadModule: "fbdev"
[ 899.752] (WW) Warning, couldn't open module fbdev
[ 899.752] (II) UnloadModule: "fbdev"
[ 899.752] (II) Unloading fbdev
[ 899.752] (EE) Failed to load module "fbdev" (module does not exist, 0)
[ 899.752] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[ 899.758] (II) modeset(0): using drv /dev/dri/card0
[ 899.759] (II) modeset(0): Creating default Display subsection in Screen section
"Default Screen Section" for depth/fbbpp 24/32
[ 899.759] (==) modeset(0): Depth 24, (==) framebuffer bpp 32
[ 899.759] (==) modeset(0): RGB weight 888
[ 899.759] (==) modeset(0): Default visual is TrueColor
[ 899.759] (II) Loading sub module "glamoregl"
[ 899.759] (II) LoadModule: "glamoregl"
[ 899.759] (II) Loading /usr/lib/xorg/modules/libglamoregl.so
[ 899.761] (II) Module glamoregl: vendor="X.Org Foundation"
[ 899.761] compiled for 1.19.3, module version = 1.0.0
[ 899.761] ABI class: X.Org ANSI C Emulation, version 0.4
[ 899.761] (II) glamor: OpenGL accelerated X.org driver based.
[ 899.872] (II) glamor: EGL version 1.4 (DRI2):
[ 899.872] EGL_MESA_drm_image required.
[ 899.873] (EE) modeset(0): glamor initialization failed
[ 899.873] (II) modeset(0): ShadowFB: preferred NO, enabled NO
[ 899.873] (II) modeset(0): Output DSI-1 has no monitor section
[ 899.873] (II) modeset(0): EDID for output DSI-1
[ 899.873] (II) modeset(0): Printing probed modes for output DSI-1
[ 899.873] (II) modeset(0): Modeline "2560x1800"x60.0 304.42 2560 2640 2720 2800 1800 1804 1808 1812 (108.7 kHz)
[ 899.873] (II) modeset(0): Output DSI-1 connected
[ 899.873] (II) modeset(0): Using sloppy heuristic for initial modes
[ 899.873] (II) modeset(0): Output DSI-1 using initial mode 2560x1800 +0+0
[ 899.873] (==) modeset(0): Using gamma correction (1.0, 1.0, 1.0)
[ 899.873] (==) modeset(0): DPI set to (96, 96)
[ 899.873] (II) Loading sub module "fb"
[ 899.873] (II) LoadModule: "fb"
[ 899.874] (II) Loading /usr/lib/xorg/modules/libfb.so
[ 899.874] (II) Module fb: vendor="X.Org Foundation"
[ 899.874] compiled for 1.19.3, module version = 1.0.0
[ 899.874] ABI class: X.Org ANSI C Emulation, version 0.4
[ 899.874] (==) Depth 24 pixmap format is 32 bpp
[ 899.897] (==) modeset(0): Backing store enabled
[ 899.897] (==) modeset(0): Silken mouse enabled
[ 899.897] (II) modeset(0): RandR 1.2 enabled, ignore the following RandR disabled message.
[ 899.897] (==) modeset(0): DPMS enabled
[ 899.897] (--) RandR disabled
[ 899.909] (II) AIGLX: Screen 0 is not DRI2 capable
[ 899.909] (EE) AIGLX: reverting to software rendering
[ 899.913] (II) IGLX: enabled GLX_MESA_copy_sub_buffer
[ 899.915] (II) IGLX: Loaded and initialized swrast
[ 899.915] (II) GLX: Initialized DRISWRAST GL provider for screen 0
[ 899.915] (II) modeset(0): Damage tracking initialized
[ 899.915] (II) modeset(0): Setting screen physical size to 677 x 476
[ 900.025] (II) config/udev: Adding input device hid-over-i2c 06CB:3370 (/dev/input/event0)
[ 900.025] (**) hid-over-i2c 06CB:3370: Applying InputClass "libinput touchscreen catchall"
[ 900.025] (II) LoadModule: "libinput"
[ 900.026] (II) Loading /usr/lib/xorg/modules/input/libinput_drv.so
[ 900.029] (II) Module libinput: vendor="X.Org Foundation"
[ 900.029] compiled for 1.19.3, module version = 0.25.1
[ 900.029] Module class: X.Org XInput Driver
[ 900.029] ABI class: X.Org XInput driver, version 24.1
[ 900.029] (II) Using input driver 'libinput' for 'hid-over-i2c 06CB:3370'
[ 900.029] (**) hid-over-i2c 06CB:3370: always reports core events
[ 900.029] (**) Option "Device" "/dev/input/event0"
[ 900.029] (**) Option "_source" "server/udev"
[ 900.030] (II) event0 - (II) hid-over-i2c 06CB:3370: (II) is tagged by udev as: Touchscreen
[ 900.031] (II) event0 - (II) hid-over-i2c 06CB:3370: (II) device is a touch device
[ 900.031] (II) event0 - (II) hid-over-i2c 06CB:3370: (II) device removed
[ 900.064] (**) Option "config_info" "udev:/sys/devices/platform/7000c000.i2c/i2c-0/0-0020/0018:06CB:3370.0001/input/input0/event0"
[ 900.064] (II) XINPUT: Adding extended input device "hid-over-i2c 06CB:3370" (type: TOUCHSCREEN, id 6)
[ 900.064] (**) Option "AccelerationScheme" "none"
[ 900.064] (**) hid-over-i2c 06CB:3370: (accel) selected scheme none/0
[ 900.064] (**) hid-over-i2c 06CB:3370: (accel) acceleration factor: 2.000
[ 900.064] (**) hid-over-i2c 06CB:3370: (accel) acceleration threshold: 4
[ 900.065] (II) event0 - (II) hid-over-i2c 06CB:3370: (II) is tagged by udev as: Touchscreen
[ 900.065] (II) event0 - (II) hid-over-i2c 06CB:3370: (II) device is a touch device
[ 900.066] (II) config/udev: Adding input device hid-over-i2c 06CB:3370 (/dev/input/mouse0)
[ 900.066] (II) No input driver specified, ignoring this device.
[ 900.066] (II) This device may have been added with another device file.
[ 900.067] (II) config/udev: Adding input device gpio-keys (/dev/input/event1)
[ 900.067] (**) gpio-keys: Applying InputClass "libinput keyboard catchall"
[ 900.067] (II) Using input driver 'libinput' for 'gpio-keys'
[ 900.067] (**) gpio-keys: always reports core events
[ 900.067] (**) Option "Device" "/dev/input/event1"
[ 900.067] (**) Option "_source" "server/udev"
[ 900.068] (II) event1 - (II) gpio-keys: (II) is tagged by udev as: Keyboard Switch
[ 900.068] (II) event1 - (II) gpio-keys: (II) device is a keyboard
[ 900.068] (II) event1 - (II) gpio-keys: (II) device is a switch device
[ 900.068] (II) event1 - (II) gpio-keys: (II) device removed
[ 900.088] (**) Option "config_info" "udev:/sys/devices/platform/gpio-keys/input/input6/event1"
[ 900.088] (II) XINPUT: Adding extended input device "gpio-keys" (type: KEYBOARD, id 7)
[ 900.089] (II) event1 - (II) gpio-keys: (II) is tagged by udev as: Keyboard Switch
[ 900.089] (II) event1 - (II) gpio-keys: (II) device is a keyboard
[ 900.089] (II) event1 - (II) gpio-keys: (II) device is a switch device
[ 900.884] (II) modeset(0): Disabling kernel dirty updates, not required.
[ 914.720] (II) event0 - (II) hid-over-i2c 06CB:3370: (II) device removed
[ 914.756] (II) event1 - (II) gpio-keys: (II) device removed
[ 915.900] (II) event0 - (II) hid-over-i2c 06CB:3370: (II) is tagged by udev as: Touchscreen
[ 915.900] (II) event0 - (II) hid-over-i2c 06CB:3370: (II) device is a touch device
[ 915.901] (II) event1 - (II) gpio-keys: (II) is tagged by udev as: Keyboard Switch
[ 915.901] (II) event1 - (II) gpio-keys: (II) device is a keyboard
[ 915.901] (II) event1 - (II) gpio-keys: (II) device is a switch device
I extract the arch-xfce-lightdm.tar.gz to /data.
And then I run fastboot boot boot-4.13-rc4_20170816_114501.img.unsigned
or fastboot boot boot-4.13-rc4_20170809_223257.img
.
It can see the noise screen both.
But I can't enter the desktop after waiting 30 minutes.
delete
The original question was the following (I don't know why the author decided to remove it):
Nice work man! With this project.
I wanted to know for quite some time why linux operating systems are not ported to phones or tablets with android like on they are on desktops and laptops. I know linux can run on various devices with different CPU architectures, I use linux daily, but why it is so hard to run some linux OS natively on android based device with linux kernel?
I know you can run linux on android with linux deploy, but not natively. Is it just because companies are not interested in porting linux to phones and tablets?
thx for reply
I seem to be having issues similar to those outlines in #3 . But for me the wireless still doesn't work. I used the get_firmware script and your latest v4.19 boot img (I couldn't manage to make a signed image on my own).
I love this project! Everything is working but wireless (I can get by with ethernet in a pinch). I don't think I'm quite the kernel hacker you are. Any pointers or advice on getting my wireless up would be greatly appreciated! Also, please let me know what info you might need. Happy to carry out tests and do diagnostics.
With our 4.14.0-rc6
kernel (and previous), the lightbar doesn't work. Apparently there are some changes in the mfd/cros*
drivers (cros_ec_lightbar.c
) that are missing. We only need to port them to our linux-smaug
kernel from Google's linux-smaug
.
Using the latest rootfs and the latest kernel (system-4.15-wifi)
[root@alarm ~]# rfkill list
0: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
1: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
[root@alarm ~]# journalctl -b | grep -i bluetooth
Feb 20 17:05:38 alarm kernel: Bluetooth: HCI UART driver ver 2.3
Feb 20 17:05:38 alarm kernel: Bluetooth: HCI UART protocol H4 registered
Feb 20 17:05:38 alarm kernel: Bluetooth: Generic Bluetooth SDIO driver ver 0.1
Feb 20 17:05:38 alarm kernel: Bluetooth: HIDP (Human Interface Emulation) ver 1.2
Feb 20 17:05:38 alarm kernel: Bluetooth: HIDP socket layer initialized
Feb 20 17:05:42 alarm systemd[1]: sys-subsystem-bluetooth-devices-hci0.device: Changed dead -> plugged
Feb 20 17:05:42 alarm systemd[1]: sys-devices-platform-700b0200.sdhci-mmc_host-mmc1-mmc1:0001-mmc1:0001:3-bluetooth-hci0.device: Changed dead -> plugged
Feb 20 17:05:42 alarm systemd[1]: bluetooth.target: Trying to enqueue job bluetooth.target/start/fail
Feb 20 17:05:42 alarm systemd[1]: bluetooth.target: Installed new job bluetooth.target/start as 101
Feb 20 17:05:42 alarm systemd[1]: bluetooth.service: Installed new job bluetooth.service/start as 102
Feb 20 17:05:42 alarm systemd[1]: bluetooth.target: Enqueued job bluetooth.target/start as 101
Feb 20 17:05:43 alarm systemd-rfkill[240]: A new rfkill device has been added with index 0 and type bluetooth.
Feb 20 17:05:43 alarm systemd-rfkill[240]: Loaded state '0' from /var/lib/systemd/rfkill/platform-700b0200.sdhci:bluetooth.
Feb 20 17:05:44 alarm systemd[1]: bluetooth.service: ConditionPathIsDirectory=/sys/class/bluetooth succeeded.
Feb 20 17:05:44 alarm systemd[1]: bluetooth.service: Passing 0 fds to service
Feb 20 17:05:44 alarm systemd[1]: bluetooth.service: About to execute: /usr/lib/bluetooth/bluetoothd
Feb 20 17:05:44 alarm systemd[1]: bluetooth.service: Forked /usr/lib/bluetooth/bluetoothd as 249
Feb 20 17:05:44 alarm systemd[1]: bluetooth.service: Changed dead -> start
Feb 20 17:05:44 alarm systemd[1]: Starting Bluetooth service...
Feb 20 17:05:44 alarm systemd[249]: bluetooth.service: Executing: /usr/lib/bluetooth/bluetoothd
Feb 20 17:05:44 alarm bluetoothd[249]: Bluetooth daemon 5.48
Feb 20 17:05:44 alarm bluetoothd[249]: Starting SDP server
Feb 20 17:05:44 alarm systemd[1]: bluetooth.service: Got notification message from PID 249 (STATUS=Starting up)
Feb 20 17:05:44 alarm systemd[1]: bluetooth.service: D-Bus name org.bluez now registered by :1.3
Feb 20 17:05:44 alarm systemd[1]: bluetooth.service: Changed start -> running
Feb 20 17:05:44 alarm systemd[1]: bluetooth.service: Job bluetooth.service/start finished, result=done
Feb 20 17:05:44 alarm systemd[1]: Started Bluetooth service.
Feb 20 17:05:44 alarm bluetoothd[249]: kernel lacks bnep-protocol support
Feb 20 17:05:44 alarm bluetoothd[249]: System does not support network plugin
Feb 20 17:05:44 alarm bluetoothd[249]: Bluetooth management interface 1.14 initialized
Feb 20 17:05:44 alarm dbus-daemon[245]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' requested by ':1.3' (uid=0 pid=249 comm="/usr/lib/bluetooth/bluetoothd ")
Feb 20 17:05:44 alarm systemd[1]: bluetooth.service: Got notification message from PID 249 (STATUS=Running)
Feb 20 17:05:44 alarm systemd[1]: bluetooth.service: Got notification message from PID 249 (READY=1)
Feb 20 17:05:44 alarm systemd[1]: bluetooth.target changed dead -> active
Feb 20 17:05:44 alarm systemd[1]: bluetooth.target: Job bluetooth.target/start finished, result=done
Feb 20 17:05:44 alarm systemd[1]: Reached target Bluetooth.
Feb 20 17:05:45 alarm NetworkManager[248]: <info> [1519146345.3840] Loaded device plugin: NMBluezManager (/usr/lib/NetworkManager/libnm-device-plugin-bluetooth.so)
Feb 20 17:05:46 alarm systemd[318]: sys-subsystem-bluetooth-devices-hci0.device: Changed dead -> plugged
Feb 20 17:05:46 alarm systemd[318]: sys-devices-platform-700b0200.sdhci-mmc_host-mmc1-mmc1:0001-mmc1:0001:3-bluetooth-hci0.device: Changed dead -> plugged
Feb 20 17:07:20 alarm systemd[542]: sys-devices-platform-700b0200.sdhci-mmc_host-mmc1-mmc1:0001-mmc1:0001:3-bluetooth-hci0.device: Changed dead -> plugged
Feb 20 17:07:20 alarm systemd[542]: sys-subsystem-bluetooth-devices-hci0.device: Changed dead -> plugged
Feb 20 17:08:26 alarm systemd[542]: obex.service: About to execute: /usr/lib/bluetooth/obexd
Feb 20 17:08:26 alarm systemd[542]: obex.service: Forked /usr/lib/bluetooth/obexd as 987
Feb 20 17:08:26 alarm systemd[542]: Starting Bluetooth OBEX service...
Feb 20 17:08:26 alarm systemd[987]: obex.service: Executing: /usr/lib/bluetooth/obexd
Feb 20 17:08:26 alarm systemd[542]: Started Bluetooth OBEX service.
Bluetoothctl:
[root@alarm ~]# bluetoothctl
Agent registered
[bluetooth]# list
[bluetooth]# show
No default controller available
[bluetooth]# scan on
No default controller available
[bluetooth]# power on
No default controller available
[bluetooth]# exit
Agent unregistered
[root@alarm ~]# ls -la /dev/ttyTHS2
crw-rw---- 1 root uucp 241, 2 Feb 20 17:05 /dev/ttyTHS2
[root@alarm ~]# ls -la /sys/class/bluetooth/hci0/
total 0
drwxr-xr-x 4 root root 0 Feb 20 17:05 .
drwxr-xr-x 3 root root 0 Feb 20 17:05 ..
lrwxrwxrwx 1 root root 0 Feb 20 17:11 device -> ../../../mmc1:0001:3
drwxr-xr-x 2 root root 0 Feb 20 17:11 power
drwxr-xr-x 3 root root 0 Feb 20 17:05 rfkill0
lrwxrwxrwx 1 root root 0 Feb 20 17:05 subsystem -> ../../../../../../../../../class/bluetooth
-rw-r--r-- 1 root root 4096 Feb 20 17:05 uevent
Ramdisk edits:
denysvitali/smaug-custom-initram@a7abf06
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.