Open18

HP Spectre x360 Ubuntu20.04設定メモ

jnuankjnuank

Caps_Lock -> Ctrlにした

https://qiita.com/macinjoke/items/746c0c0adb74cfdeb9e7

 % cat ~/.xmodmap 
remove lock = Caps_Lock

keycode 66 = Control_L
keycode 100 = Hiragana
keycode 102 = Zenkaku_Hankaku
keycode 101 = Super_L 
keycode 97 = underscore backslash underscore backslash
keycode 49 = Escape

add control = Control_L

電源オン時と、サスペンド復帰時には、キーボードの接続が一旦切れるせいで、このキーマップはもとに戻る。

対策としては、電源オン、サスペンド復帰時のフックを使用して、xmodmapを実行する
https://zenn.dev/jnuank/articles/8a616e539109cb

jnuankjnuank

内蔵スピーカーのみ音が出ない

最終的にこれでなんとかなった

$ sudo hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x01
nid = 0x1, verb = 0x717, param = 0x1
value = 0x0
$ sudo hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x01
nid = 0x1, verb = 0x716, param = 0x1
value = 0x0
$ sudo hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x01
nid = 0x1, verb = 0x715, param = 0x1
value = 0x0
$ sudo hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x00
nid = 0x1, verb = 0x715, param = 0x0
value = 0x0

sudo hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x01;  sudo hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x01; sudo hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x01; sudo hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x00

https://itectec.com/ubuntu/ubuntu-no-audio-in-speaker-hp-spectre-x360/
https://wiki.archlinux.org/index.php/HP_Spectre_x360_(2020)#Audio

使っているのは、sof-audio-pci

% lspci -v | grep audio -A5
0000:00:1f.3 Multimedia audio controller: Intel Corporation Device a0c8 (rev 20)
	Subsystem: Hewlett-Packard Company Device 8811
	Flags: bus master, fast devsel, latency 32, IRQ 196
	Memory at 603f290000 (64-bit, non-prefetchable) [size=16K]
	Memory at 603f000000 (64-bit, non-prefetchable) [size=1M]
	Capabilities: <access denied>
	Kernel driver in use: sof-audio-pci
	Kernel modules: snd_hda_intel, snd_sof_pci

0000:00:1f.4 SMBus: Intel Corporation Device a0a3 (rev 20)
	Subsystem: Hewlett-Packard Company Device 8811
	Flags: medium devsel, IRQ 16

こちらの記事を読んでいたら、無効にしたほうが良さそう
https://askubuntu.com/questions/1243369/sound-card-not-detected-ubuntu-20-04-sof-audio-pci

サウンドカードが認識されているか

**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: sofhdadsp [sof-hda-dsp], デバイス 0: HDA Analog (*) []
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 0: sofhdadsp [sof-hda-dsp], デバイス 1: HDA Digital (*) []
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 0: sofhdadsp [sof-hda-dsp], デバイス 3: HDMI1 (*) []
  サブデバイス: 0/1
  サブデバイス #0: subdevice #0
カード 0: sofhdadsp [sof-hda-dsp], デバイス 4: HDMI2 (*) []
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 0: sofhdadsp [sof-hda-dsp], デバイス 5: HDMI3 (*) []
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
 % sudo update-grub
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Linux イメージを見つけました: /boot/vmlinuz-5.8.0-45-generic
Found initrd image: /boot/initrd.img-5.8.0-45-generic
Linux イメージを見つけました: /boot/vmlinuz-5.8.0-43-generic
Found initrd image: /boot/initrd.img-5.8.0-43-generic
Adding boot menu entry for UEFI Firmware Settings
完了

jnuankjnuank

必要なソフトウェアのインストール

Chrome

https://inab818.site/linux/ubuntu-20-04-lts-google-chrome-download-install/#Google_Chrome

JetBrains

https://www.jetbrains.com/toolbox-app/

Docker

DockerをUbuntuにインストール
https://qiita.com/tkyonezu/items/0f6da57eb2d823d2611d

一般ユーザで動かす
(一度、システムをシャットダウンしてからログインし直さないと反映されなかった)
https://qiita.com/naomichi-y/items/93819573a5a51ae8cc07

vim、nkf、jqインストール

sudo apt-get install jq nkf vim

zoom

https://support.zoom.us/hc/ja/articles/204206269-LinuxにZoomをインストールまたは更新する#h_adcc0b66-b2f4-468b-bc7a-12c182f354b7

discord

https://linuxconfig.org/how-to-install-discord-on-linux

vscode

https://qiita.com/yoshiyasu1111/items/e21a77ed68b52cb5f7c8

pip

sudo apt install python3-pip
jnuankjnuank

スクリーンショットの撮り方

PrtSc – 画面全体のスクリーンショットを "Pictures"ディレクトリに保存します。
Shift + PrtSc – 特定の地域のスクリーンショットを画像に保存します。
Alt + PrtSc – 現在のウィンドウのスクリーンショットを画像に保存する.
Ctrl + PrtSc – 画面全体のスクリーンショットをクリップボードにコピーします。
Shift + Ctrl + PrtSc – 特定の地域のスクリーンショットをクリップボードにコピーします。
Ctrl + Alt + PrtSc – 現在のウィンドウのスクリーンショットをクリップボードにコピーします。

https://websetnet.net/ja/best-tools-for-taking-and-editing-screenshots-in-linux/

jnuankjnuank

Ubuntuは、キーボードやオーディオデバイスなどは、サスペンド後の復帰で接続し直すようになるから、keymapや音声設定がなくなってしまう

jnuankjnuank

キーボード、内蔵スピーカーが出ない問題

スピーカーが出ないのは既知の問題。
このコマンドを、他のAudioデバイスをつなげてない状態で実施すれば音が鳴るようになるが、それが電源を入れたりサスペンドから復帰した時に毎回必要となる。
https://zenn.dev/jnuank/scraps/cb090b81b4403e#comment-383056ae3dba4f

キーボードはキーマッピングを色々変えたくてxmodmapを使用しているが、
こちらも電源入れるたびorサスペンドから復帰するたびに起こるので、毎回 xmodmap ~/.Xmodmapを使用する必要がある。

電源を入れるたびに、起動したいスクリプトを実行

/etc/rc.local に設定することで起動時に実行したいスクリプトの指定が可能
(sudoが必要だから、1ユーザーのために配置するようなものじゃない気がするが、そこは置いておく)
https://qiita.com/taraijpn/items/2ec3acead27be2f7bd50

/etc/rc.local

#!/bin/bash

sleep 30

# キーコンフィグ
xmodmap /home/jun/.Xmodmap

# オーディオ用の設定
sudo hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x01
sudo hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x01
sudo hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x01
sudo hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x00

exit 0

起動直後だとキーボードなどのデバイスがすぐに接続されたと認識しないので、sleep 30 で待つようにしている。
(このUbuntuのキーボードなどデバイスはすべて外部から接続? する特性でサスペンドするたびにxmodmapの設定が飛ぶらしい)

サスペンドからの復帰のたびに、起動したいスクリプトを実行

サスペンドから復帰するたびに実行するのは、 /lib/systemd/system-sleep/の配下にスクリプトを配置すればよい

/lib/systemd/system-sleep/

#!/bin/bash

USERN=xxxx
SCRIPT=/home/xxx/Settings/key_map

if [ "$2" != "suspend" ] ; then  exit 0 ; fi


if [ "$1" = "post" ] ; then
	DISPLAY=:0
	export DISPLAY
	sleep 10
	su $USERN -c "$SCRIPT"
fi

/home/xxx/Settings/key_map

#!/bin/bash

xmodmap /home/jun/.Xmodmap

~/.Xmodmap

remove lock = Caps_Lock

keycode 66 = Control_L
keycode 100 = Hiragana
keycode 102 = Zenkaku_Hankaku
keycode 101 =  
keycode 97 = underscore backslash underscore backslash

add control = Control_L

標準だとバックスラッシュだったので、アンダースコアにした(Shift使えばバックスラッシュになる)