Posts

Plan 9: Multi-touch Touchpad

Synopsys DesignWare I²C on Intel LPSS (Alder Lake) The touchpad is connected through the Intel LPSS (Low Power Subsystem) I²C controller, which uses Synopsys DesignWare I²C IP. The following output demonstrates touch events being decoded and generated in userspace. n indicates the number of fingers reported by the touchpad. touch conf 1 tip 1 id 0 x 1377 y 1129 scan 13523 n 1 btn 0 touch conf 1 tip 1 id 0 x 1377 y 1129 scan 13691 n 1 btn 0 touch conf 1 tip 1 id 0 x 1377 y 1129 scan 14675 n 1 btn 0 touch conf 1 tip 1 id 0 x 1378 y 1129 scan 15659 n 1 btn 0 touch conf 1 tip 1 id 0 x 1381 y 1130 scan 16643 n 1 btn 0 touch conf 1 tip 1 id 0 x 1383 y 1131 scan 17627 n 1 btn 0 touch conf 1 tip 1 id 0 x 1386 y 1132 scan 18611 n 1 btn 0 touch conf 1 tip 0 id 0 x 1386 y 1132 scan 19599 n 1 btn 0 touch conf 1 tip 1 id 0 x 1580 y 1192 scan 34460 n 2 btn 0 touch conf 1 tip 1 id 0 x 1580 y 1192 scan 35343 n 2 btn 0 touch conf 1 tip 1 id 0 x 1580 y 1192 scan 36331 n 2 btn 0 touch conf 1 tip 1 id 0 ...

Plan 9: Realtek PCI Wifi Driver

Realtek PCI Wifi Driver for RTL8851BE based on Linux rtw89 driver. The code covers firmware download and H2C communication.   Files /sys/src/9/port/etherrtw89.c /sys/src/9/port/rtw89/   Code https://gitlab.com/atamariya/plan9front  (rtw89 branch) References Linux Realtek PCI Wifi Driver rtw89   PCI passthrough setup for QEMU    

Plan 9: Play Invidious Video

Image
  Play Youtube videos directly in Plan 9 via Invidious.  Invidious is an alternative front-end to YouTube treason is the video player in Plan 9 nvi is the interface to Youtube (via Invidious API) and Peertube   nvi -A 140 -V 134 -s /mnt/v1 ciWzklgc98o # Use lang id when available  nvi -A 140 :lang -V 134 -s /mnt/v1 ciWzklgc98o # Exit echo exit > /mnt/v1/ctl    treason -a /mnt/v1/audio /mnt/v1/video   # Download mode nvi -A 140 -V 134 -a /tmp/audio -v /tmp/video  ciWzklgc98o   treason file.mp4      # Wrapper script. Default a=140, v=136 yt ciWzklgc98o # Lowest quality yt -l ciWzklgc98o # Highest quality yt -h ciWzklgc98o     Installation Download the treason package - includes codecs and mcfs. rm -rf /tmp/treason mkdir /tmp/treason cd /tmp/treason hget https://ftrv.se/_/treason.gz | gunzip | disk/mkext -d . ./treason/install.rc    Replace treason, nvi and mcfs from repositories listed in t...

Plan 9: Poking PCI Hardware

Image
  Poking the VGA card  term% cat /dev/pci/*ctl 06.00.00 8086/29c0   0 03.00.00 1234/1111    0 0:fd000008 16777216 2:feb94000 4096 02.00.00 8086/10d3  11 0:feb40000 131072 1:feb60000 131072 2:0000c041 32 3:feb90000 16384 00.ff.00 1234/11e8  11 0:fea00000 1048576 06.01.00 8086/2918   0 01.06.01 8086/2922  10 4:0000c061 32 5:feb95000 4096 0c.05.00 8086/2930  10 4:00000701 64 term% cat /dev/vgactl type vesa size 1280x720x32 x8r8g8b8 tilt none hwgc soft hwaccel off hwblank on addr p 0xfd000000 v 0xfffffe80fd000000 size 0x1000000 softscreen on term% echo 1280*4 | bc 5120 term% grep -l  1234/1111 /dev/pci/*ctl /dev/pci/0.1.0ctl term% dd -if /dev/pci/0.1.0 bar0 -of /dev/pci/0.1.0 bar0 -bs 5120 -count 64 -oseek 200 64+0 records in 64+0 records out Don't worry about the display corruption. It will be redrawn by Rio when you move the cursor or the window.   Code devpnp.c and archacpi.c    

Plan 9: Code Assist (Rio)

Image
  This is part 2 of my vision of Plan 9 as an Infinity Notebook . This focuses on the developer tools expanding on these ideas . Text color   Syntax Highlight Highlight comment, string and keywords. This is triggered on demand presently. For more advanced rendering requirements, use plot . In general, syntax highlighting is a computing intensive operation. Each character needs an attribute to store font size, weight, slant and color attributes. Font attributes affect which font file (regular, bold, italic or bold-italic version) is used for rendering. Each of this also affects the box size calculations for line wrap. This implementation uses a simpler approach using spans to store color information: Scanner : table-driven matchers ( mblock , mline , mstring , mident ), first match wins, each returns a length and a class. Classes : one {name, rgba, img} table indexed by an enum, initialized once. Output : waddcolorspanclass stores sorted spans; spanfirst finds the first...

Plan 9: Code Assist

Image
Jump to definition with ctags    Use ctags for jump-to-defintion. Also, you can use Button3 in acme to jump to include files - both system and local headers. readtags uses binary search . So it makes jump to symbol faster on a large codebase.  Note: Use  sig  command for signature lookup.  Use  src  command for jumping to Plan 9 command sources.  If you have mounted contrib sources, use this . Alternatively, download tar from https://ctags.sourceforge.net/  . Make following changes: in Makefile, add '-DHAVE_REMOVE' (remove() instead of unlink()) and '-DHAVE_OPENDIR' (for directory recursion option) to DEFS in config.h, remove or comment out the definition of INT_MAX  # Use one below to enable APE bind -b /$objtype/bin/ape /bin ape/psh    # ls doesn't support -di option in Plan 9 sed 's/ls -di/ls/' configure > configure.new mv configure.new configure   # Fake presence of egrep cp /bin/grep /$objtype/bin/ ...

Plan 9: Devanagari Input with kbmap

Image
  Note : The demo uses layer 3 for better key visualization while using Devanagari.                The PS/2 interface presents two physical layers, switched on if the input scancode is one or two bytes. This second "escaped" layer is typically generated for keys like `Home' and `Ins'. Kbdfs additionally maintains eight more virtual layers that are switched on `Shift', `Ctl', `AltGr', and `Mod4' modifier key state. Not all permutations of these modifiers are represented as layers, the exhaustive list is as follows: none Key shift Shift + Key esc Escaped Key altgr AltGr + Key ctl Ctl + Key ctlesc Ctl + Escaped Key shiftesc Shift + Escaped Key shiftaltgr Shift + AltGr + Key mod4 Mod4 + Key altgr...