Map'A'Droid is a scanner for PoGo based on Android devices.
- Website - For general information
- Discord - For general support
- Github Issues - For reporting bugs (not for support!)
- Supported Devices - Supported devices by MAD
- Python 3.6
- MySQL database, with RocketMap or Monocle structure
- Rooted Android device
- PogoDroid token (only necessary for MITM Mode), obtainable via Patreon
- Game running in English, Deutsch or Français (for Quest mode)
MAD is compatible with this Monocle schema and this RocketMap fork. Please use them or change your database accordingly.
Install python 3.6
& pip3
according to docs for your platform. Make sure you carefully check the command, since even if python3.6 is installed, the python3
command could still point to python3.5
or below!
Once Python is installed, ensure that pip
and python
is installed correctly by running:
python3 --version
- should return3.6.x
pip3 --version
- If it returns a version, it is working.
Clone this repository:
git clone https://github.com/Map-A-Droid/MAD.git
Make sure you're in the directory of MAD and run:
pip3 install -r requirements.txt
If you want to use OCR to scan raids or scanning for Quests, run with requirements_ocr.txt
and install additional packages: apt-get install tesseract-ocr python-opencv
RGC (Remote GPS Controller) is responsible for receiving the GPS commands from your server, taking screenshots (if OCR is enabled) and managing PoGo on the phone (restarting, detecting if PoGo is opened, etc)
PogoDroid is the MITM (Man in the middle) App for reading the data from the game and send it to your server. If you use the OCR method, you don’t need this app.
Inside the configs
folder, duplicate the config.ini.example
and rename it to config.ini
. Then populate it with at least the database and websocket configurations.
In order to map devices to areas, do the same with mappings_example.json
and rename it to mappings.json
Refer to mappings_example.json for examples or run python3 start.py -wm
and open the MADMIN mappings editor (http://localhost:5000).
MAD can scan for IVs with two different modes: iv_mitm
scans already scanned mon specified by mon_ids_iv
. A typical usecase is to just IV check rare spawns with it. The second mode is mon_mitm
. That is just like regular mon scanning but every encounter defined in mon_ids_iv
gets IV checked automatically with the same scanner - one encounter per location. Every other config parameter is explained in MADmin.
Each area requires geofence_included
. A geofence can easily be created with geo.jesparke.net
A geofence requires a name:
[geofence name]
withlat, lng
per line, no empty lines at the end of file
- Ensure your phone has an unlocked bootloader and is able to support root. Lineage OS is a good place to start for a custom ROM and they have good installation instruction for each device.
- Install Magisk to root the phone via recovery. Repackage the MagiskManager App and add PoGo to Magisk Hide. Make sure to delete the folder
/sdcard/MagiskManager
after repackaging.
It's necessary to pass the Safetynet check to run the game on rooted phones. Check the Safetynet status in the MagiskManager App.
Install RGC (Remote GPS Controller) and PogoDroid (only necessary for MITM mode) on the phone. RGC must be installed as a system app. Best practice is to convert it to a system app with link2sd.
Both apps require an Origin header field that's configured in mappings.json. These Origins need to be unique per running python instance.
The websocket URI for RGC is ws://<ip>:<port>
and the POST destination for PogoDroid is http://<ip>:<port>
.
The port for RGC is 8080 by default and can be changed with
ws_port
. The port for PogoDroid is 8000 by default and can be changed withmitmreceiver_port
.
The IP address is the IP of your server, not your phone!
To login into PogoDroid, you need a token. You can obtain a token by clicking on Get Token
in PogoDroid and sending the command !settoken <your_token>
to the MAD Discord Bot. This will only work if you're a Patreon supporter and linked your account to Discord.
If you are experiencing weird and quick GPS jumps to the actual location from the phone, you can try these steps to fix it.
Keep in mind that any of these possible fixes can cause boot loops or crashes. Please create a backup of your phone, if you don't want to start over.
- Use tinfoil around your phone (seriously)
- Enable GMS reset
- Disable Google Play Services background data
- Set the device to GPS only
- Disable Wi-Fi location (same settings tab as GPS)
- Try flightmode with only Wi-Fi enabled
Make sure you're in the directory of MAD and run:
python3 start.py
Usually, you want to append -wm
and -os
as arguments to start madmin (browser-based monitoring) and the scanner (-os
) responsible for controlling devices and receiving data from Pogodroid (if OCR enabled, also take screenshots).
If you want to run OCR on screenshots, run -oo
to analyse screenshots
MADMIN is a web frontend to configure MAD to your needs, see the current position of your devices, fix OCR failures. You can enable it with with_madmin
in the config file or -wm
as a command line argument. The default port is 5000. See the config.ini.example for more options.
To make your life easier you can use the scripts in scripts/
.
If you used to scan before and happen to still have your spawnpoints in your Monocle or Rocketmap database then you can use this script to import them to MAD. You must have the trs_spawn table already in your database and you must have filled out the Database portion of the MAD config file!
If you ran the MITM method for the first time, you will probably notice that all gyms are missing names and pictures. If you want to add this information, you can use this script. First of all, you'll need a CSV Export from the Ingress Intel Map. Install IITC and the IntelCsvExporterMADedition.js
in the scripts directory. Make sure to scrape all the necessary portals in your area and export the CSV file to your server. The second step is to run the script with the csv file as the first parameter.
Example: ./intelimport.sh export.csv
.
RGC and PogoDroid both support wss/HTTPS respectively. Thus you can setup reverse proxies for MAD. The Auth headers in RGC and Pogodroid both use Basic auth. This means the password/username is not encrypted per default, that's to be done by SSL/TLS (wss, HTTPS).