/metrodroid

Read data from public transit cards using your NFC Android phone!

Primary LanguageKotlinGNU General Public License v3.0GPL-3.0

Translation status Build Status

Direct APK download

Version: 2.9.42

View your remaining balance, recent trips, and other information from contactless public transit cards using your NFC-enabled Android device!

I presented Metrodroid and the work I did on supporting a number of Australian agencies' cards at linux.conf.au 2018, in my talk, Tap on to reverse engineering.

Thanks to

Translated by

Thanks to those who have helped to make Metrodroid available in languages other than English:

Supported card protocols

Supported cards / agencies

Card / Agency Location Notes
AT HOP ๐Ÿ‡ณ๐Ÿ‡ฟ Auckland, New Zealand ๐Ÿ†• ๐Ÿ†”
Beijing Municipal Card ๐Ÿ‡จ๐Ÿ‡ณ Beijing, China ๐Ÿ†•
Bilhete รšnico ๐Ÿ‡ง๐Ÿ‡ท Sรฃo Paulo, Brazil ๐Ÿ” MFC
BUS-IT ๐Ÿ‡ณ๐Ÿ‡ฟ Greater Hamilton (Waikato), New Zealand ๐Ÿ†• ๐Ÿ” MFC
Carta Mobile ๐Ÿ‡ฎ๐Ÿ‡น Pisa, Italy ๐Ÿ†•
CharlieCard ๐Ÿ‡บ๐Ÿ‡ธ Boston, MA, USA ๐Ÿ†• ๐Ÿ” MFC
City Union ๐Ÿ‡จ๐Ÿ‡ณ Mainland China ๐Ÿ†•
Clipper ๐Ÿ‡บ๐Ÿ‡ธ San Francisco, CA, USA
Compass ๐Ÿ‡จ๐Ÿ‡ฆ Vancouver, BC, Canada ๐Ÿ†• 1๏ธโƒฃ
Cubic Nextfare ๐ŸŒŽ many locations ๐Ÿ†• ๐Ÿ” MFC
EasyCard ๐Ÿ‡น๐Ÿ‡ผ Taipei, Taiwan ๐Ÿ” MFC
Edy ๐Ÿ‡ฏ๐Ÿ‡ต Japan
EMV ๐ŸŒ many locations ๐Ÿ†•
Envibus ๐Ÿ‡ซ๐Ÿ‡ท Sophia Antipolis, France ๐Ÿ†•
ERG ๐ŸŒ many locations ๐Ÿ†• ๐Ÿ” MFC
EZ-Link ๐Ÿ‡ธ๐Ÿ‡ฌ Singapore
Go card ๐Ÿ‡ฆ๐Ÿ‡บ Brisbane and South East Queensland, Australia ๐Ÿ†• ๐Ÿ” MFC
GoCard ๐Ÿ‡ณ๐Ÿ‡ฟ Otago, including Greater Dunedin and Queenstown, New Zealand ๐Ÿ†• MFC
Go-to card ๐Ÿ‡บ๐Ÿ‡ธ Minneapolis-St. Paul, MN, USA ๐Ÿ†• ๐Ÿ” MFC
Hafilat ๐Ÿ‡ฆ๐Ÿ‡ช Abu Dhabi, UAE ๐Ÿ†•
Hop Fastpass ๐Ÿ‡บ๐Ÿ‡ธ Portland, OR, USA ๐Ÿ†• ๐Ÿ†”
HSL, Matkakortti ๐Ÿ‡ซ๐Ÿ‡ฎ Finland
IstanbulKart ๐Ÿ‡น๐Ÿ‡ท Istanbul, Turkey ๐Ÿ†• ๐Ÿ†”
Kartu Multi Trip ๐Ÿ‡ฎ๐Ÿ‡ฉ Jakarta, Indonesia KMT
Kiev Metro ๐Ÿ‡บ๐Ÿ‡ฆ Kiev, Ukraine ๐Ÿ†• ๐Ÿ” MFC
KomuterLink ๐Ÿ‡ฒ๐Ÿ‡พ Malaysia ๐Ÿ†• ๐Ÿ” MFC
Krasnodar ETK ๐Ÿ‡ท๐Ÿ‡บ Krasnodar, Russia ๐Ÿ†• ๐Ÿ” MFC
Leap ๐Ÿ‡ฎ๐Ÿ‡ช Ireland ๐Ÿ†• ๐Ÿ”“
Lisboa Viva ๐Ÿ‡ต๐Ÿ‡น Lisbon, Portugal
Manly Fast Ferry ๐Ÿ‡ฆ๐Ÿ‡บ Sydney, NSW, Australia ๐Ÿ†• ๐Ÿ” MFC
Metrocard ๐Ÿ‡ฆ๐Ÿ‡บ Adelaide, SA, Australia ๐Ÿ†•
Metrocard ๐Ÿ‡ณ๐Ÿ‡ฟ Christchurch, New Zealand ๐Ÿ†• ๐Ÿ” MFC
Metromoney ๐Ÿ‡ฌ๐Ÿ‡ช Tbilisi, Georgia ๐Ÿ†• ๐Ÿ” MFC
Mobib ๐Ÿ‡ง๐Ÿ‡ช Brussels, Belgium ๐Ÿ†•
Myki ๐Ÿ‡ฆ๐Ÿ‡บ Melbourne (and surrounds), VIC, Australia ๐Ÿ†• ๐Ÿ†”
MyWay ๐Ÿ‡ฆ๐Ÿ‡บ Australian Capital Territory, Australia ๐Ÿ†• ๐Ÿ” MFC
Navigo ๐Ÿ‡ซ๐Ÿ‡ท Paris, France ๐Ÿ†•
NETS FlashPay ๐Ÿ‡ธ๐Ÿ‡ฌ Singapore
Nol ๐Ÿ‡ฆ๐Ÿ‡ช Dubai, UAE ๐Ÿ†• ๐Ÿ†”
Octopus ๐Ÿ‡ญ๐Ÿ‡ฐ Hong Kong ๐Ÿ†•
Opal ๐Ÿ‡ฆ๐Ÿ‡บ Sydney (and surrounds), NSW, Australia ๐Ÿ†•
Opus ๐Ÿ‡จ๐Ÿ‡ฆ Quรฉbec, Canada ๐Ÿ†•
ORCA ๐Ÿ‡บ๐Ÿ‡ธ Seattle, WA, USA
Orenburg EKG ๐Ÿ‡ท๐Ÿ‡บ Orenburg, Russia ๐Ÿ†• ๐Ÿ” MFC
OรนRA ๐Ÿ‡ซ๐Ÿ‡ท Grenoble, France ๐Ÿ†•
OV-chipkaart ๐Ÿ‡ณ๐Ÿ‡ฑ Netherlands ๐Ÿ” MFC
Oyster ๐Ÿ‡ฌ๐Ÿ‡ง London, United Kingdom ๐Ÿ” MFC
Podorozhnik ๐Ÿ‡ท๐Ÿ‡บ Saint Petersburg, Russia ๐Ÿ†• ๐Ÿ” MFC
Rav-Kav ๐Ÿ‡ฎ๐Ÿ‡ฑ Israel ๐Ÿ†•
Rejsekort ๐Ÿ‡ณ๐Ÿ‡ด Norway ๐Ÿ†• ๐Ÿ” MFC
RicaricaMi ๐Ÿ‡ฎ๐Ÿ‡น Milan, Italy ๐Ÿ†• ๐Ÿ” MFC
Samara ETK ๐Ÿ‡ท๐Ÿ‡บ Samara, Russia ๐Ÿ†• ๐Ÿ” MFC
Selecta ๐Ÿ‡ซ๐Ÿ‡ท France ๐Ÿ†•
Shenzhen Tong ๐Ÿ‡จ๐Ÿ‡ณ Shenzhen, Guangdong Province, China ๐Ÿ†•
SLAccess ๐Ÿ‡ธ๐Ÿ‡ช Stockholm, Sweden ๐Ÿ†• ๐Ÿ” MFC
Smartride ๐Ÿ‡ณ๐Ÿ‡ฟ Rotorua, New Zealand ๐Ÿ†• MFC
SmartRider ๐Ÿ‡ฆ๐Ÿ‡บ Western Australia, Australia ๐Ÿ†• ๐Ÿ” MFC
Snapper ๐Ÿ‡ณ๐Ÿ‡ฟ Wellington, New Zealand ๐Ÿ†•
Strelka ๐Ÿ‡ท๐Ÿ‡บ Moscow, Russia ๐Ÿ” ๐Ÿ†” MFC
Suica, ICOCA, PASMO ๐Ÿ‡ฏ๐Ÿ‡ต Japan
SunCard ๐Ÿ‡บ๐Ÿ‡ธ Orlando, FL, USA ๐Ÿ†• ๐Ÿ” ๐Ÿ†” MFC
TaM ๐Ÿ‡ซ๐Ÿ‡ท Montpellier, France ๐Ÿ†•
Tartu Bus ๐Ÿ‡ช๐Ÿ‡ช Tartu, Estonia ๐Ÿ†• ๐Ÿ†” MFC
T-Money ๐Ÿ‡ฐ๐Ÿ‡ท South Korea ๐Ÿ†•
T-Union ๐Ÿ‡จ๐Ÿ‡ณ Mainland China ๐Ÿ†•
TransGironde ๐Ÿ‡ซ๐Ÿ‡ท Gironde, France ๐Ÿ†•
Transit Access Pass ๐Ÿ‡บ๐Ÿ‡ธ Los Angeles, CA, USA ๐Ÿ†• ๐Ÿ” MFC
Troika ๐Ÿ‡ท๐Ÿ‡บ Moscow, Russia ๐Ÿ†• ๐Ÿ” MFC
Ventra ๐Ÿ‡บ๐Ÿ‡ธ Chicago, IL, USA ๐Ÿ†• 1๏ธโƒฃ
Wuhan Tong ๐Ÿ‡จ๐Ÿ‡ณ Wuhan, Hubei Province, China ๐Ÿ†•
Yaroslavl ETK ๐Ÿ‡ท๐Ÿ‡บ Yaroslavl, Russia ๐Ÿ†• ๐Ÿ” MFC
Zolotaya Korona ๐Ÿ‡ท๐Ÿ‡บ multiple cities in Russia ๐Ÿ†• ๐Ÿ” MFC
Note Meaning
๐Ÿ†• New in Metrodroid.
๐Ÿ” Encryption keys required to read this card.
๐Ÿ”“ Encryption keys are downloaded from the operator.
๐Ÿ‡ธ๐Ÿ‡ฌ CEPAS cards (Singapore) are not compatible with all devices (ISO 14443-B).
MFC MIFARE Classic card; requires NXP NFC chipset in your phone.
๐Ÿ†” Only the card number can be read.
KMT Only new FeliCa-based cards can be read.
1๏ธโƒฃ Only single-use tickets can be read.

This project will only read data from the card itself, without having to connect to the agency's back-office systems. In some cases, limited data is available, so balance information and trip history might not be available.

Note: The Leap card reader connects to Transport for Ireland's server for challenge-response authentication with the card. The data is otherwise interpreted locally, and connectivity is disabled by default.

Supported Phones

Metrodroid requires an Android phone running 4.1 or later, with NFC support.

Some devices do not support MIFARE Classic. MIFARE Classic is not an NFC-compliant card format, so can only be read with phones with NXP chipsets.

License and copyright

Copyright 2015 โ€“ 2019 Michael Farrell

Copyright 2011 โ€“ 2013 Eric Butler

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

This program contains Leaflet, a JavaScript mapping library, licensed under the BSD license.

This program contains nfc-felica-lib, a library for communicating with Sony FeliCa cards, licensed under the Apache 2.0 license.

This software and it's authors are not associated with any public transit agency. Pictures of supported cards, including their logos, are included with this software package for the purposes of identifying cards.

Building / hacking on this software

  1. Clone the repository including submodules:

    $ git clone --recursive https://github.com/micolous/metrodroid.git
    

    If you get an error from Gradle about :nfc-felica-lib not being available, then your clone doesn't have the submodules.

  2. Import the directory into Android Studio.

    Android Studio will prompt you to install the appropriate SDK version, build tools, and Gradle.