0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RaspberryでGPIOをサポートしAzureEdgeで動かす場合にエラーが/dev/gpiomem: Permission deniedが出るときの対処

Last updated at Posted at 2020-04-24

AzureEdge on Raspberry with GPIO

AzureIotでデバイス部分を担当するサービスであり、Dockerが動作するので自分で好きなコードを書き、データをAzureHubに送ることができます。
Iotなのでセンサーのデータを送りたいと思い、まずGPIOでタクトスイッチが押されたときにメッセージを投げるというプログラムを書いてみました。

現象

AzureEdgeのサンプルプログラムを作成しGPIOのコードを組み込んだところ、
wiringPiSetup: Unable to open /dev/mem or /dev/gpiomem: Permission denied.
Aborting your program because if it can not access the GPIO
hardware then it most certianly won't work
Try running with sudo?
というエラーが発生しました。
前回この現象が出ていたので、さっそくdeploment.template.jsonにあるcreateOptionsに

"HostConfig": {
   "Privileged": true
}

を追加しましたが、エラーは解消せず。

対処

ネットを見回りしていたところこれが発見されました。
みたところDockerfile(ラズパイなのでDockerfile.arm32v7)に

RUN useradd -ms /bin/bash moduleuser
USER moduleuser

がいけないことが判明。これはmoduleuserという一般ユーザを作成し、そのユーザで動作させるといったようです。
この2行をコメントアウトしたら動作しました。

結果

  • createOptionsにPrivilegedを記載
  • moduleuserを無効にする

AzurwIorサイコー!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?