エントリー

カテゴリー「PC」の検索結果は以下のとおりです。

マイクロSDカードが壊れた

32GB程度のmSDが必要になったのでカーオーディオで使用していたmSD32GBは大きすぎることもあり8GBにして使うことにした

IMG_20200404_192429377_HDR.jpg

このmSDは新車になってオーディオで直接SDが刺せるようになったため2019年5月に新しく卸したカードで2019年10月頃に一度追加書込みしている

ところが(Windows10から)書込みしようとしてもエラーとなり,ファイルの消去しようにもメニュから「削除」が表示されない

どうやらR/O(リードオンリー)マウントされているようだ

ググってみると以下の手順でW/R(リードライト)にする方法があった

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

PS C:\WINDOWS\system32> diskpart

Microsoft DiskPart バージョン 10.0.18362.1

Copyright (C) Microsoft Corporation.
コンピューター: RYZEN5

DISKPART> list disk

  ディスク      状態           サイズ   空き   ダイナ GPT
 ###                                          ミック
 ------------  -------------  -------  -------  ---  ---
 ディスク 0    オンライン     3726 GB 1024 KB    *    *
 ディスク 1    オンライン     3726 GB 1024 KB    *    *
 ディスク 2    オンライン      238 GB    0  B
 ディスク 3    オンライン       29 GB 3072 KB

DISKPART> select disk 3

ディスク 3 が選択されました。

DISKPART> list disk

  ディスク      状態           サイズ   空き   ダイナ GPT
 ###                                          ミック
 ------------  -------------  -------  -------  ---  ---
 ディスク 0    オンライン     3726 GB 1024 KB    *    *
 ディスク 1    オンライン     3726 GB 1024 KB    *    *
 ディスク 2    オンライン      238 GB    0  B
* ディスク 3    オンライン       29 GB 3072 KB

DISKPART> attributes disk clear readonly

ディスクの属性が正しく消去されました。

DISKPART> exit

DiskPart を終了しています...
PS C:\WINDOWS\system32>

残念ながら復旧できず,SDカードフォーマッタでも初期化できなかったので,どうやらSDカードが壊れたようだ

SDカードがまったく書込みできなくなるのは初めてで,車で利用していたため熱が考えられるが,明確な原因が判らないので対処方法が無い

カーオーディオでの利用形態はmSD直でなくスロットがSDであるためアダプタ経由となる

今後はアダプタでSDの書込み禁止にして様子を見ることにした

FX-4100のメモリ異常

そろそろPC1台を新しいCPUに更新しようと考えていたが,あんまり必要性も無いこともありFX-4100を使い倒そうと余っていたWindows10 HOMEをセットアップ

FX-4100は起動ディスクを交換式にしマルチOS対応にしていたので,これまで使用していたXP64も(ディスク交換によって)使用可能

IMG_20200315_162951731_HDR.jpg

(昔intel CPUが入っていたのでCoreシールが貼ってあるが中身はAMD FX-4100)

また,ついでにUbuntuの起動ディスクを作成した際「Memtest86+」も導入されGRUBから起動できるようになっていたのでテストしてみたところ・・・

IMG_20200315_143049523.jpg

なんと!エラーが続出

これまでFX-4100では稀に原因不明の動作異常となる事があったが,もしかするとメモリの問題だったのか?

ノンパリティメモリのためメモリエラーがあっても判断できず,異常データのまま使用されプログラムの動作がおかしくなるだけでなく,ディスクに書き込まれたデータの信頼性の問題,ファイルシステムの不整合を発生する可能性がある

どうしたもんか一晩考え,メモリの調整を行うことにした

IMG_20200315_170952633_HDR.jpg

(利用している4GB×2のメモリ)

しかしメモリスロットの変更やアルコールで清掃,またクロックを下げたり電圧を上げたりアクセスタイミングを変えたりとやってみたが改善せず,最終的にどうやらデュアルチャネルで使用するとエラーとなることが判明

IMG_20200315_155812391.jpg

シングルチャネルで「Memtest86+」を実行するとエラーは発生しない

だがこれだとOSからは半分の4GBしかメモリを利用できないため勿体ない

どうにかならないかネットでマザーボードのメモリサポート状況(ASRock 990FX Extreme4)を確認してみるとデュアルチャネルで使用する場合は4枚の方が多い事が判る

もしかすると4枚だと正常になるかと思い確認してみた

他の手持ちのDDR3メモリはCore i3で使用中の4枚

(1GB×2)

IMG_20200315_170626407_HDR.jpg

(2GB×2)

IMG_20200315_170556970_HDR.jpg

(2GB×2)を取り出し(4GB×2)と組み合わせて「Memtest86+」を実行してみるとエラーが無くなった

IMG_20200315_190504154.jpg

とりあえずは解決し,FX-4100では12GBで使用することにした

Core i3はUbuntuでの使用なので2GBで問題ない

ラズパイにOLEDを接続してCPU温度表示

ラズパイ4のCPU温度が気になってターミナルから監視してたのだけど・・・簡単にI2Cが使えるのだから表示器を接続して常時見えるようにすれば良いじゃないか!と気付くまで時間が掛かってしまった

IMG_20200223_210556716_HDR.jpg

情報取集したところ手持ちのI2C接続表示器のうちLCD(「AQM1602*」や「AQM0802*」)は,通信電圧の問題があって工夫すれば使用できるものの綺麗な接続でないので断念しOLEDを使う

OLED使用となるとSSD1306のグラフィックライブラリ(ArduinoならU8glibやU8g2lib)が必要でラブパイ(debian)だとpython用にライブラリがある

(参考)

ライブラリ(U8glib)の移植という方法もあったが折角の機会なのでpythonに初挑戦

しかし当然というかpythonの環境がすんなり出来なくてすったもんだ楽しむことになる

ハードウェア

OLEDをラズパイのGPIOに接続する

多数の方が選択している片側(奇数)ピンの連続5ピンを利用(もう片側の偶数ピンの電源ピンをFANで使用しているという理由もある)

IMG_20200222_163439476_HDR.jpg

ピン接続用の変換アダプタを作製

IMG_20200222_162945203_HDR.jpgIMG_20200222_162959883_HDR.jpg

ラズパイ4と接続

IMG_20200222_163428170.jpg

ソフトウェア

OLED接続確認

(I2Cの有効化)

$ sudo raspi-config
$ sudo shutdown -r now

(ツールインストール)

$ sudo apt install i2c-tools

$ sudo i2cdetect -l
i2c-1 i2c bcm2835 I2C adapter I2C adapter
$ sudo i2cdetect -y 1
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
$

CPU温度表示プログラムの作成

(python環境セットアップ)

$ sudo apt-get install python-setuptools
$ sudo apt-get install python3-setuptools

(ライブラリインストールのためのpipセットアップ)

$ sudo apt install python3-pip

(GPIOライブラリのインストール)

$ sudo pip3 install RPi.GPIO

(SSD1306ライブラリのインストール)

$ git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
loning into 'Adafruit_Python_SSD1306'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 137 (delta 0), reused 0 (delta 0), pack-reused 134
Receiving objects: 100% (137/137), 43.42 KiB | 225.00 KiB/s, done.
Resolving deltas: 100% (69/69), done.
$ cd Adafruit_Python_SSD1306
$ sudo python3 setup.py install

(Pillowのインストール)

$ sudo pip3 install pillow

(追加:OS版数により以下が必要かも)

$ sudo pip3 install Adafruit_BBIO

(サンプル実行)

IMG_20200223_162957544_HDR.jpg

(嵌った点)

  • pythonの最新がV3なのだがデフォルトが3になっていない(2から3で大幅に変更されているため互換はない)
  • エラーメッセージが判り難いためライブラリが無いことがメッセージからは判らない
  • python3を実行しなければならない(pythonだとV2が実行)
  • pip3を使用する(pipは無い)

(CPU温度表示プログラム)

#!/usr/bin/python3
# coding: UTF
#
import time
import Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

import subprocess

# Raspberry Pi pin configuration:
RST = None # on the PiOLED this pin isnt used

# 128x32 display with hardware I2C:
disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, i2c_address=0x3C)

# Initialize library.
disp.begin()

# Clear display.
disp.clear()
disp.display()

# Create blank image for drawing.
# Make sure to create image with mode '1' for 1-bit color.
width = disp.width
height = disp.height
image = Image.new('1', (width, height))

# Get drawing object to draw on image.
draw = ImageDraw.Draw(image)

# Draw a black filled box to clear the image.
draw.rectangle((0, 0, width, height), outline=0, fill=0)

# Load default font.
#font = ImageFont.load_default()
# Load font.
font1 = ImageFont.truetype('/home/pi/font/8-BIT WONDER.TTF', 8)
font2 = ImageFont.truetype('/home/pi/font/upheavtt.ttf', 40)

while True:

# Draw a black filled box to clear the image.
draw.rectangle((0, 0, width, height), outline=0, fill=0)

clock = str(subprocess.check_output("vcgencmd measure_clock arm", shell = True))
clock = clock[clock.find('=')+1:-9] + "MHz"
temp = str(subprocess.check_output("vcgencmd measure_temp", shell = True))
temp = temp[temp.find('=')+1:-3]

# Write two lines of text.
draw.text((0, 0), clock, font=font1, fill=255)
draw.text((8, 2), temp, font=font2, fill=255)

# Display image.
disp.image(image)
disp.display()
time.sleep(5)

(補足)

  • 表示文字はディフォルトでは寂しかったのでフリーフォントを(例:https://www.dafont.com/bitmap.php から)DLして利用
  • リアルタイム表示に近づけるなら最終行のsleep時間を短くする
  • 行末文字列位置もstr.findで得た方が良い

(実行)

/etc/rc.local から起動(cronという選択もある:cron実行用に修正が必要)

以下をrc.localの適正な位置に追加

# OLED Display
if [ -x /home/pi/disptemp.py ]
then
     /home/pi/disptemp.py > /dev/null 2>&1&
fi

 

ラズパイ4を購入してレトロパイを導入

ラズパイ4の性能が随分向上しているそうなので購入した

IMG_20200202_151648074_HDR.jpg

ラズパイ3との性能差はベンチマークだけでは判らないようなので,レトロパイをセットアップして体感で確認することにする

レトロパイのサイトには,まだラズパイ4用のイメージはないのでRasbian+Retropieのマニュアルインストールを行う

IMG_20200202_152830299.jpg

セットアップ

詳細はマニュアルインストールに書いてある

RasbianのDLサイトからlite版(現時点では2019-09-26-raspbian-buster-lite.zip)をDLして解凍,mSDへ書込みラズパイ4を起動

追加:(実際にセットアップしたのは数日前だったもので)後から見たら2020-02-05-raspbian-buster-lite.zipがあった

(ちなにみmSDへイメージ書込みを行うならFAT32のフォーマットは行う必要はない)

自動的にパーティーションサイズを変更しmSD全体を使えるようになって「login: 」となるのでログイン(pi, raspberry)して確認

$ df -h

先ずはアップデート

$ sudo apt-get update
$ sudo apt-get upgrade

各設定(raspi-configを利用すると楽)

$ sudo raspi-config

ロケール,タイムゾーン,KBの設定

HOSTNAMEの変更,SSHの起動

VRAMを512に設定

(ロケールは「Ja_JP.UTF-8 UTF-8」を追加選択するが「en_GB.UTF-8 UTF-8」の選択を外さず指定も変更しない方がコンソールで文字化けしないので良い)

$ shutdown -r now

(再起動)

この後はPCからSSH経由で設定可能

メッセージがうざいのでパスワード変更

$ passwd

レトロパイのセットアップ

$ sudo apt-get install git lsb-release
$ git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git
$ cd RetroPie-Setup
$ sudo ./retropie_setup.sh

[Basic Install] を実行

 ・・・

(NDSエミュレータのセットアップ:DraSticのインストール)

[Update RetroPie-Setup script] を実行

[Manage packages] > [Manage experimental packages] > [drastic] > [Install from binary] と実行

(emulationstationを自動起動)

[Configuration / tools] > [autostart - Auto-start Emulation Station / Kodi on boot] > [Start Emulation Station at boot] と実行

(その他,fontサイズを大きくしておくと見やすくなる)

[Configuration / tools] > [consolefont] > [Large ...] など

日本語ファイル名の表示

$ sudo apt-get install fonts-droid-fallback

LAN経由でファイル操作するためsambaの設定

$ sudo apt-get install samba
$ sudo vi /etc/samba/smb.conf

(/etc/samba/smb.confの最後に以下を追加)

[roms]
comment = roms
path = "/home/pi/RetroPie/roms"
writeable = yes
guest ok = yes
create mask = 0644
directory mask = 0755
force user = pi
[bios]
comment = bios
path = "/home/pi/RetroPie/BIOS"
writeable = yes
guest ok = yes
create mask = 0644
directory mask = 0755
force user = pi
[configs]
comment = configs
path = "/opt/retropie/configs"
writeable = yes
guest ok = yes
create mask = 0644
directory mask = 0755
force user = pi
[splashscreens]
comment = splashscreens
path = "/home/pi/RetroPie/splashscreens"
writeable = yes
guest ok = yes
create mask = 0644
directory mask = 0755
force user = pi
$ sudo shutdown -r now

(再起動)

レトロパイのコントローラーのボタン設定となる

 ・・・

(音が出ない問題)

セットアップのHDMI指定とかconfig.txtだけでは解決せずまったく解からなかったがこちらで解決した(ありがたい)

$ sudo vi /boot/config.txt

hdmi_drive=2 ← コメントアウトを外す

$ sudo vi /boot/cmdline.txt

1行目に以下を追加

snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_compat_alsa=1

以下のようになる

console=serial0,115200 console=tty1 root=PARTUUID=ec335738-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_compat_alsa=1
$ sudo shutdown -r now

(再起動)

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 3/3
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 IEC958/HDMI [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: ALSA [bcm2835 ALSA], device 2: bcm2835 IEC958/HDMI1 [bcm2835 IEC958/HDMI1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: b1 [bcm2835 HDMI 1], device 0: bcm2835 HDMI 1 [bcm2835 HDMI 1]
Subdevices: 2/2
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
card 2: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
Subdevices: 2/2
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1

(HDMI0へ出力の場合)

$ amixer -q cset numid=3 2
IMG_20200202_155203775_HDR.jpg
性能

N64エミュレーターなど(画面解像度もアップしているのに)描画とサウンドの遅延がなくなり性能アップを体感

不具合

動作確認したところ以下の不具合を発見

・「emulationstation」起動時の初期位置が画面と異なる(初期位置指定は問題なし)

・N64エミュレーターの「Mupen64plus」の画面が中央にスケーリングされて表示されなくなった

→ 画面を640x480にすれば解決,起動用スクリプトで画面サイズを指定可能(前は320x240だった),SDL_VIDEO_RPI_SCALE_MODEは変更しても変化しない

・NDSエミュレーター「DraStic」の設定画面の入力が1つ遅れて動作する(入力キューのミスか?)

・リスタートでUSB接続しているゲームパッドやKBが認識されない事やUSB機器を接続し直すとシステムダウンすることがある(いずれも電源OFFでしか復旧しない)

その他

・USB2接続から独立したLANになったため転送性能は向上している

WS101.png

(注)システムキャッシュがある分だけ高速に転送.残りはmSDの書込み性能に依存

・Raspbianはlite版以外でも問題なし,デスクトップ環境は「emulationstation」と切替できる

・Ubuntu(ubuntu-19.10-preinstalled-server-arm64+raspi3.img.xz:ラズパイ4正式版)でも試してみたが(libraspberrypi-bin libraspberrypi-dev)が指定のリポジトリから導入できず途中で断念

(2020.02.10 追加)

システムアップグレードしたらレトロパイが動作しなくなった.すったもんだしたが復旧できず,しかたないのでRasbianを2020-02-05版で再セットアップし動作を確認.詳細は後日

WS102.png

(2020.02.11 追加)

再セットアップしたmSDから起動できなくなった

再度mSDのセットアップで調査した結果,本日時点ではソフトウェアアップデートを追加で行うと起動しなくなることが判明(Boot中にハングアップするので手が出せない)

ソフトウェアアップデートを行わないでセットアップするしか回避方法はない

ページ移動

ユーティリティ

検索

エントリー検索フォーム
キーワード

過去ログ

Feed