# デバイス検出

本サービスに付属のmDNSを使用して、ローカルネットワーク内のすべてのオンラインFIRERPAデバイス、およびそれに対応するアドレスやバージョンなどの情報を検出できます。さらに、`{ro.serialno}.local` のようなドメイン名を使用して、ブラウザから直接FIRERPAリモートデスクトップなどのサービスにアクセスすることも可能です。mDNSドメイン名を使用するには、お使いのシステムがmDNSをサポートしており、かつFIRERPAのバージョンが7.85以上である必要があることに注意してください。デフォルトではmDNSサービスは起動していません。サービスを有効にするには `mdns.enable=true` を設定する必要があります。


## すべてのデバイスを検出

`mdns-beacon` ツールライブラリを使用して、すべてのデバイスを迅速にリストアップできます。まず `pip install mdns-beacon` を実行してこのツールをインストールしてください。インストールが完了したら、以下のコマンドを実行します。これにより、現在のネットワークで実行されているすべてのFIRERPAデバイスがリストアップされます。この機能は、実際のネットワーク設定や特定のデバイスモデルの影響により、デバイスを検出できない場合があります。

```bash
mdns-beacon listen --service _lamda._tcp.local.
```

![mdns-beacon](/assets/images/mdns-beacon.png)


お使いのデバイスがmDNSをサポートしている場合（Macが最適にサポートしており、WindowsやLinuxでは追加設定が必要な場合があります）、ブラウザにサーバー名とポート番号、例えば `ad12cf9d6d15385f.local:65000` のように入力して、リモートデスクトップに直接アクセスできます。ここで表示される `ad12cf9d6d15385f` のような文字列は、Androidシステムの `android_id` です。以下のコマンドで取得できます。

```bash
adb shell settings get secure android_id
```

もちろん、`zeroconf` ツールライブラリを使用して、プログラムでデバイス検出を行うことも可能です。例えば [python-zeroconf](https://github.com/python-zeroconf/python-zeroconf) は、プログラムによるサービス検出だけでなく、一部のAndroidデバイス情報（設定が必要）を列挙することもできます。


## サービス検出の設定

また、`properties.local` 設定ファイルを使用して、サービス検出の一部を構成することもサポートしています。例えば、サービスタイプを変更したり、各デバイスに固定のサーバー名を使用させたりすることができます。


現在のデバイスのID、ABI、Androidバージョン、モデルなどのデバイス情報をブロードキャストするかどうかを設定します。デフォルトではブロードキャストされません。

```ini
mdns.meta=true
```

現在のデバイスのmDNSサービス名を設定します。これを変更することで、FIRERPAのステルス性を高めることができます。デフォルトは `lamda` です。

```ini
mdns.service=lamda
```

現在のデバイスに固定のサーバー名（上の図で見たServerフィールド名）を設定します。設定する名前に `.local` サフィックスを含める必要はありません。このサフィックスは必須であり、自動的に追加されます。各デバイスには、重複しない固定の名前を設定する必要があります。

```ini
mdns.name=DEVICEID-UNIQUE-NAME
```