Skip to content

Read data from public transit cards using your NFC Android phone! (iOS 13 and PC/SC support coming soon)

License

Notifications You must be signed in to change notification settings

metrodroid/metrodroid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Translation status Build Status

Direct APK download iOS version coming soon!

Version: 3.0.xx

View remaining balance, recent trips, and other info from contactless public transit cards using NFC on Android and iOS (coming soon).

View the presentation of work undergone to support a number of Australian agencies' cards, given at linux.conf.au 2018, in the 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
Amiibo ๐ŸŒ worldwide ๐Ÿ†• IOS
AT HOP ๐Ÿ‡ณ๐Ÿ‡ฟ Auckland, New Zealand ๐Ÿ†• ๐Ÿ†” IOS
Beijing Municipal Card ๐Ÿ‡จ๐Ÿ‡ณ Beijing, China ๐Ÿ†•
bip! ๐Ÿ‡จ๐Ÿ‡ฑ Santiago de Chile, Chile ๐Ÿ†• ๐Ÿ” MFC
Bilhete รšnico ๐Ÿ‡ง๐Ÿ‡ท Sรฃo Paulo, Brazil ๐Ÿ” MFC
BUS-IT ๐Ÿ‡ณ๐Ÿ‡ฟ Greater Hamilton (Waikato), New Zealand ๐Ÿ†• ๐Ÿ” MFC
Carta Mobile ๐Ÿ‡ฎ๐Ÿ‡น Pisa, Italy ๐Ÿ†• IOS
CharlieCard ๐Ÿ‡บ๐Ÿ‡ธ Boston, MA, USA ๐Ÿ†• ๐Ÿ” MFC
Cifial ๐ŸŒ worldwide ๐Ÿ†• MFC
City Union ๐Ÿ‡จ๐Ÿ‡ณ Mainland China ๐Ÿ†• IOS
Clipper ๐Ÿ‡บ๐Ÿ‡ธ San Francisco, CA, USA IOS
Compass ๐Ÿ‡จ๐Ÿ‡ฆ Vancouver, BC, Canada ๐Ÿ†• 1๏ธโƒฃ IOS
Crimea Trolleybus Crimea ๐Ÿ†• ๐Ÿ” MFC
Cubic Nextfare ๐ŸŒŽ many locations ๐Ÿ†• ๐Ÿ” MFC
EasyCard Taipei ๐Ÿ” MFC
Edy ๐Ÿ‡ฏ๐Ÿ‡ต Japan
Ekarta ๐Ÿ‡ท๐Ÿ‡บ Ekaterinburg, Russia ๐Ÿ†• ๐Ÿ” MFC
Electronic Barnaul ๐Ÿ‡ท๐Ÿ‡บ Barnaul, Russia ๐Ÿ†• ๐Ÿ” MFC
EMV ๐ŸŒ worldwide ๐Ÿ†•
Envibus ๐Ÿ‡ซ๐Ÿ‡ท Sophia Antipolis, France ๐Ÿ†• IOS
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 ๐Ÿ†• IOS
HOLO ๐Ÿ‡บ๐Ÿ‡ธ Oสปahu, HI, USA ๐Ÿ†• ๐Ÿ†” IOS
Hop Fastpass ๐Ÿ‡บ๐Ÿ‡ธ Portland, OR, USA ๐Ÿ†• ๐Ÿ†” IOS
HSL, Matkakortti, Waltti ๐Ÿ‡ซ๐Ÿ‡ฎ Finland IOS
IstanbulKart ๐Ÿ‡น๐Ÿ‡ท Istanbul, Turkey ๐Ÿ†• ๐Ÿ†” IOS
Kartu Multi Trip ๐Ÿ‡ฎ๐Ÿ‡ฉ Jakarta, Indonesia KMT IOS
Kazan transport card ๐Ÿ‡ท๐Ÿ‡บ Kazan, Russia ๐Ÿ†• ๐Ÿ” MFC
Kiev Metro ๐Ÿ‡บ๐Ÿ‡ฆ Kiev, Ukraine ๐Ÿ†• ๐Ÿ” MFC
Kirov transport card ๐Ÿ‡ท๐Ÿ‡บ Kirov, Russia ๐Ÿ†• ๐Ÿ” MFC
KomuterLink ๐Ÿ‡ฒ๐Ÿ‡พ Malaysia ๐Ÿ†• ๐Ÿ” MFC
Krasnodar ETK ๐Ÿ‡ท๐Ÿ‡บ Krasnodar, Russia ๐Ÿ†• ๐Ÿ” MFC
Leap ๐Ÿ‡ฎ๐Ÿ‡ช Ireland ๐Ÿ†• ๐Ÿ”“
Lisboa Viva ๐Ÿ‡ต๐Ÿ‡น Lisbon, Portugal ๐Ÿ†• IOS
Manly Fast Ferry ๐Ÿ‡ฆ๐Ÿ‡บ Sydney, NSW, Australia ๐Ÿ†• ๐Ÿ” MFC
Metrocard ๐Ÿ‡ฆ๐Ÿ‡บ Adelaide, SA, Australia ๐Ÿ†• IOS
Metrocard ๐Ÿ‡ณ๐Ÿ‡ฟ Christchurch, New Zealand ๐Ÿ†• ๐Ÿ” MFC
Metromoney ๐Ÿ‡ฌ๐Ÿ‡ช Tbilisi, Georgia ๐Ÿ†• ๐Ÿ” MFC
Mobib ๐Ÿ‡ง๐Ÿ‡ช Belgium ๐Ÿ†• IOS
MRT Jakarta ๐Ÿ‡ฎ๐Ÿ‡ฉ Jakarta, Indonesia ๐Ÿ†•
Myki ๐Ÿ‡ฆ๐Ÿ‡บ Melbourne (and surrounds), VIC, Australia ๐Ÿ†• ๐Ÿ†” IOS
MyWay ๐Ÿ‡ฆ๐Ÿ‡บ Australian Capital Territory, Australia ๐Ÿ†• ๐Ÿ” MFC
Navigo ๐Ÿ‡ซ๐Ÿ‡ท Paris, France ๐Ÿ†• IOS
NETS FlashPay ๐Ÿ‡ธ๐Ÿ‡ฌ Singapore
Nol ๐Ÿ‡ฆ๐Ÿ‡ช Dubai, UAE ๐Ÿ†• ๐Ÿ†” IOS
Octopus ๐Ÿ‡ญ๐Ÿ‡ฐ Hong Kong ๐Ÿ†• IOS
Opal ๐Ÿ‡ฆ๐Ÿ‡บ Sydney (and surrounds), NSW, Australia ๐Ÿ†• IOS
Opus ๐Ÿ‡จ๐Ÿ‡ฆ Quรฉbec, Canada ๐Ÿ†• IOS
ORCA ๐Ÿ‡บ๐Ÿ‡ธ Seattle, WA, USA IOS
Orenburg EKG ๐Ÿ‡ท๐Ÿ‡บ Orenburg, Russia ๐Ÿ†• ๐Ÿ” MFC
OรนRA ๐Ÿ‡ซ๐Ÿ‡ท Grenoble, France ๐Ÿ†• IOS
OV-chipkaart ๐Ÿ‡ณ๐Ÿ‡ฑ Netherlands ๐Ÿ” MFC
Oyster ๐Ÿ‡ฌ๐Ÿ‡ง London, United Kingdom ๐Ÿ†• ๐Ÿ” MFC
Penza transport card ๐Ÿ‡ท๐Ÿ‡บ Penza, Russia ๐Ÿ†• ๐Ÿ” MFC
Podorozhnik ๐Ÿ‡ท๐Ÿ‡บ Saint Petersburg, Russia ๐Ÿ†• ๐Ÿ” MFC
Rav-Kav ๐Ÿ‡ฎ๐Ÿ‡ฑ Israel ๐Ÿ†• IOS
Rejsekort ๐Ÿ‡ฉ๐Ÿ‡ฐ Denmark ๐Ÿ†• ๐Ÿ” MFC
RicaricaMi ๐Ÿ‡ฎ๐Ÿ‡น Milan, Italy ๐Ÿ†• ๐Ÿ” MFC
Samara ETK ๐Ÿ‡ท๐Ÿ‡บ Samara, Russia ๐Ÿ†• ๐Ÿ” MFC
Selecta ๐Ÿ‡ซ๐Ÿ‡ท France ๐Ÿ†• MFC
Shenzhen Tong ๐Ÿ‡จ๐Ÿ‡ณ Shenzhen, Guangdong Province, China ๐Ÿ†• IOS
Siticard ๐Ÿ‡ท๐Ÿ‡บ Nizhniy Novgorod, Russia ๐Ÿ†• ๐Ÿ” MFC
SLAccess ๐Ÿ‡ธ๐Ÿ‡ช Stockholm, Sweden ๐Ÿ†• ๐Ÿ” MFC
Smartride ๐Ÿ‡ณ๐Ÿ‡ฟ Rotorua, New Zealand ๐Ÿ†• MFC
SmartRider ๐Ÿ‡ฆ๐Ÿ‡บ Western Australia, Australia ๐Ÿ†• ๐Ÿ” MFC
Snapper ๐Ÿ‡ณ๐Ÿ‡ฟ Wellington, New Zealand ๐Ÿ†• IOS
Strelka ๐Ÿ‡ท๐Ÿ‡บ Moscow, Russia ๐Ÿ” ๐Ÿ†” MFC
Strizh ๐Ÿ‡ท๐Ÿ‡บ Izhevsk, Russia ๐Ÿ†• ๐Ÿ” MFC
Suica, ICOCA, PASMO ๐Ÿ‡ฏ๐Ÿ‡ต Japan
SunCard ๐Ÿ‡บ๐Ÿ‡ธ Orlando, FL, USA ๐Ÿ†• ๐Ÿ” ๐Ÿ†” MFC
TaM ๐Ÿ‡ซ๐Ÿ‡ท Montpellier, France ๐Ÿ†• IOS
Tartu Bus ๐Ÿ‡ช๐Ÿ‡ช Tartu, Estonia ๐Ÿ†• ๐Ÿ†” MFC
T-Money ๐Ÿ‡ฐ๐Ÿ‡ท South Korea ๐Ÿ†• IOS
TPF card ๐Ÿ‡จ๐Ÿ‡ญ Fribourg, Switzerland ๐Ÿ†• ๐Ÿ†”
TransGironde ๐Ÿ‡ซ๐Ÿ‡ท Gironde, France ๐Ÿ†• IOS
Transit Access Pass ๐Ÿ‡บ๐Ÿ‡ธ Los Angeles, CA, USA ๐Ÿ†• ๐Ÿ” MFC
Troika ๐Ÿ‡ท๐Ÿ‡บ Moscow, Russia ๐Ÿ†• ๐Ÿ” MFC
T-Union ๐Ÿ‡จ๐Ÿ‡ณ Mainland China ๐Ÿ†• IOS
Umarsh ๐Ÿ‡ท๐Ÿ‡บ multiple cities in Russia ๐Ÿ†• ๐Ÿ” MFC
Ventra ๐Ÿ‡บ๐Ÿ‡ธ Chicago, IL, USA ๐Ÿ†• 1๏ธโƒฃ IOS
Warszawska Karta Miejska ๐Ÿ‡ต๐Ÿ‡ฑ Warsaw, Poland ๐Ÿ†• ๐Ÿ†” ๐Ÿ” MFC
Wuhan Tong ๐Ÿ‡จ๐Ÿ‡ณ Wuhan, Hubei Province, China ๐Ÿ†• IOS
Yaroslavl ETK ๐Ÿ‡ท๐Ÿ‡บ Yaroslavl, Russia ๐Ÿ†• ๐Ÿ” MFC
Yoshkar-Ola ๐Ÿ‡ท๐Ÿ‡บ Yoshkar-Ola, 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.
๐Ÿ‡ฎ๐Ÿ‡ช Leap not yet supported on iOS.
๐Ÿ‡ฏ๐Ÿ‡ต FeliCa cards with more than 1 system not supported on iOS.
๐Ÿ‡ธ๐Ÿ‡ฌ CEPAS cards (Singapore) are not compatible with all devices (ISO 14443-B). Not supported on iOS.
MFC MIFARE Classic card; requires NXP NFC chipset in your device. Not supported on iOS.
๐Ÿ†” Only the card number can be read.
KMT Only new FeliCa-based cards can be read.
1๏ธโƒฃ Only single-use tickets can be read.
IOS Supported on Metrodroid for iOS.

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 devices

Metrodroid for Android requires Android 4.1 or later, with NFC support.

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

Metrodroid for iOS requires iOS 13.0 or later, and iPhone 7 or later. It does not support other iOS devices, even those that support Apple Pay.

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 https://www.gnu.org/licenses/.

This program contains Leaflet, a JavaScript mapping library, licensed under the BSD 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/metrodroid/metrodroid.git
    

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

    ZIP source code downloads from GitHub's web interface will not work!

  2. Import the directory into Android Studio.

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