|
|
 
USA Flag
PLX Logo
|
|
|

August Specials
+1 (408) 745-7591
OBDII to iPhone / iPad / iPod Touch / PC
Sensor Module Interface
Green Driving Learning Tool
Standalone MPG Scan Tool
2 1/16" (52mm) Basic Touch Screen
2 1/16" (52mm) Color Gauge
Wideband with Fuel Select
Wideband UEGO Controller
30PSI, 3 Bar Manifold Pressure
K-Type T.C. EGT Controller
Oil Pressure Sender
Water and Oil Temperature Sensor Controller
K-Type T.C. AIT Controller
USB Data Logging Interface
For DM-6, DM-100
For DM-6, DM-100
For DM-200
4 Button Replacement
Power, USB, 2.1mm Cable
Required for Gen1 Sensor Modules
Bosch Wideband LSU 4.2
SM-AFR to O2 Sensor Cable
M18 x 1.5mm Pitch
M18 x 1.5mm Pitch
Swivel Mount with Adhesive
K-Type 1/8 NPT" Sensor
K-Type 1/8 NPT" Sensor
VDO Sensor, Wires Connectors
VDO Sensor, Wires Connectors
Power, 2.1mm Wires and Terminals
2 1/16" (52mm) Color Gauge
60mm (2 3/8") Color Gauge
Single USB Output
Gen2 Dual USB Output
Wideband AFR and OBD II Gauge Combo
OBDII to Android / PC / Linux / Symbian / N9
Wideband AFR Gauge Combo with Health Monitoring
710 Lumen Digital Focus
USB Multi Meter
Water Resistant Carrying Case
Water Resistant Carrying Case
Male USB to Micro Male USB Cable
Multi Port Cable
Paul Lowchareonkul Xtreme Devices
Kiwi 2 Wifi
Kiwi 2 Wifi
Kiwi 2 Wifi
$8999
For more product information, please click on the tabs below.
Overview:
Kiwi 2 Wifi is a plug and play automotive tool that connects to the onboard diagnostic port (OBDII / CAN). This tool communicates and retrieves information from your car's computer and wirelessly transmits to any iPhone, iPod Touch and iPad. It is compatible with 1996 and later vehicles and installs in seconds. The Kiwi 2 Wifi can efficiently monitor a vehicle's MPG, data log engine parameters, read/reset engine trouble codes and monitor real time engine performance. Simply connect your device to the Kiwi 2 Wifi through a wifi connection, and launch the compatible app of your choice to obtain vital information about your vehicle.

The Kiwi 2 Wifi includes several improvements over the first generation award winning Kiwi 1 Wifi. It now comes with a sleek new design and is 0.25 inches thinner. The cable length has been reduced from 6 feet to 3 feet, making for a cleaner permanent installation. It incorporates an elm327 compatible interface and it works with ISO9141, VPW, PWM, and CAN protocols.

The Kiwi 2 Wifi incorporates a new advanced power saving circuit, designed to shut off power to essential functions of the unit allowing the Kiwi 2 Wifi to be permanently installed in your vehicle without draining your vehicle's battery. After 5 minutes of inactivity, the Kiwi 2 Wifi automatically enters a low power sleep mode. To turn the unit back on, a simple press of the soft switch wakes the device back up.

The Kiwi 2 Wifi includes an 8 pin port on the back designed to be mated with the PLX iMFD Adapter. This allows you to connect high performance aftermarket sensors such as wideband air/fuel ratio, exhaust gas temperature, vacuum/boost, air intake temperature, fluid pressure and fluid temperature and view on your iOS mobile device. This solution is desired for applications where vehicles do not support certain sensors and/or the car's computer does not report them. With the PLX iMFD Adapter attached, the best of both worlds of fully plug and play OBD2 / CAN data as well as high performance aftermarket sensors can be obtained.
Features:
Depending on the application, the following features may be available:
  • Check Engine Diagnostics
  • Real-time Gauges
  • Fuel Efficiency and MPG
  • Engine Sensors
  • Customizable Dashboard
  • Real-time Dyno
  • Data Logging
  • GPS Track Mapping
  • Skid Pad
  • Video Recording and Data Overlay
  • iMFD Aftermarket Sensor Interface
Customer Reviews
There are no customer reviews yet.
  • Apps
  • Videos
  • Technical Specifications
  • Included Items
  • OBDII Sensors
  • Awards
  • iMFD Sensors
  • iMFD Adapter
  • Press Release
  • Software Development
Kiwi Wifi is compatible with:
All apps are third party and purchased through the Apple App Store.
  • Dash Command App Icon
    Dash Command
  • Rev App Icon
    Rev
  • Roaders App Icon
    Roaders
  • Speedport App Icon
    Speedport
  • Harry's Lap Timer Pro App Icon
    Harry's Lap Timer Pro
  • BMWhat App Icon
    BMWhat
  • OBIE App Icon
    OBIE
  • DragFX App Icon
    DragFX
  • ScanXL Icon
    ScanXL for PC
Dash Command Icon
© 2010 Palmer Performance Engineering, Inc.
DashCommand for Apple iOS Devices
*Compatible with PLX Logger 3.0
WANT GAUGES? This is the app for that. DashCommand is the ultimate OBD-II supplementary vehicle instrumentation application available for the iPhone and iPod touch. The built in dashboards can display a total of 27 gauges pulling data directly from your ride's engine control module. Also use DashCommand as scan tool to read and clear the trouble codes that caused the "check engine light" to turn on, a trip computer, or a race day companion.

--- SEMA Show 2009 1st runner-up for best mobile electronics product.
--- Winner of 9 Global Media Awards at SEMA Show 2009

Additional Features:
  • Professional skidpad showing lateral and accel/braking Gs with min/max indicators
  • Race track visually maps out your location, acceleration and braking as you drive laps around the track allows you to visually analyze different race track laps to see how acceleration and braking changed from lap to lap thus helping you to improve your lap times on your next outing.
  • Inclinometer shows rolling angle and vehicle pitch for off-roading.
  • Full support for OBD-II diagnostics, find out why your check-engine light is on and clear diagnostic trouble codes (DTCs)
  • Data logging, record and playback log files showing OBD-II data and skidpad/race track data simultaneously
Dash Command Menu
Dash Command Engine Screenshot
Dash Command Fuel Economy Screenshot
Dash Command Performance Screenshot
Dash Command Trip Stats Screenshot


REV Icon
© 2010 Devtoaster
Rev
Rev monitors, displays, charts, and records real-time data by interacting with your vehicle's onboard diagnostic system. Rev can also check and reset "Check Engine" lights and trouble codes and much more!

** Proud Winner of the 2009 Popular Mechanics Editor's Choice Award! **
Rev 2.0 now has a great suite of features:
  • Display of up to 5 metrics at once with a drag-and-drop customizable interface: position gauges however you want and save configurations for later.
  • Store information about your vehicle: Rev remembers details about your vehicles so it can accurately calculate horsepower and other metrics.
  • Check Engine light on? Want to get rid of the nagging light on your dash? Rev supports engine trouble code checking, translation, and resetting.
  • Logging: record and review time-based or GPS-based data. Export data runs as Excel-compatible CSV data.
  • GPS Track: Using the iPhone's GPS, learn about your acceleration and braking on the road and on the circuit. Green and red colors represent moments of forward and braking acceleration. Perfect your cornering habits and master the track.
  • Save time and money! Check your emissions before going to the shop! Readiness monitors include 11 vehicle tests that your vehicle must have "ready" before it can pass emissions tests in most states. Rev will tell you which tests are supported for your vehicle, and whether or not they are ready. Some great info can be found here: https://www.wivip.com/monitor052108.pdf
  • Acceleration: Displays, records, and charts your cornering, braking and acceleration G-forces.
  • Automatic metric bounds adjustment.
  • Redline: give any metric a redline value.
  • PLX Kiwi Wifi + iMFD support. Use Rev to interface with PLX's extendable iMFD sensor system.

 
Roaders Icon
© 2010 Plurix
Roaders
ROADERS turns your iOS device into a complete tool to track routes, view diagnostics and get in touch with friends and people enthusiastic for cars. The app makes your track fun and it's a great motivator for reducing your gasoline consumption, CO2 emission and how efficient and economic your car is at all levels. You can share your routes and your car performance with friends or people who uses the same model car as you all over the world.

Use the app to track and share your route, based on a distance activity. The app keeps a full log of your tracking, including tracks, distance, duration, consume. You can see what routes your friends have been up to, and you can see your friends LIVE when they are tracking their routes!

Roaders.com.br offers advanced analyses of your vehicle and a wide range of other features.
By connecting with Facebook, you can invite your friends, share your routes on Timeline and make your experience even better.

ROADERS make your experience in the road much more complete!
Fun and social, share with your friends, discover new places, find new ways.
Go to the road. BE A ROADER!!!
Features
  • Performance Gauges:
    • USING GPS:
      • GPS Speed
      • Acceleration (and Breaking)
      • Distance and Time Tracking
      • Max Speed
    • USING OBD:
      • ALL GPS GAUGES
      • Corrected Vehicle Speed
      • Instant Horse Power
      • Instant Consumption
      • Instant CO2
  • Tracking:
    • Save your routes on website
    • Share your routes with friends
    • Follow your friends routes
    • Follow your own routes
    • Become your routes public
  • Friends:
    • See your friends activities on Timeline
    • Invite friends from Facebook
    • Invite friends by e-mail
    • See your friends routes stats
  • Diagnostics:
    • Check your car diagnostic trouble codes
    • Save your car diagnostics
Extra Features:
  • AUTOPAUSE: if you get traffic in your routing or make a quick stop, the app pauses tracking and starts it again automatically
    (with function turned ON)
  • Live Route (See in real time what routes your friends are doing)
  • Add as many cars as you want
  • Check your different car performances on website, and OVERALL
  • Find the closest car dealer accordingly your car brand
DISCLAIMER: This application uses GPS in the background. Continued use of GPS running in the background can dramatically decrease battery life.
Speedport Icon
© 2009-2010 AutoSpeed Performance, LLC.
Speedport
SpeedPORT allows you to switch performance profiles of your vehicle's Engine Management Software, Scan Diagnostic Trouble Codes, Reset Check Engine Lights, View Engine Parameters Real-time and more!

SpeedPORT was developed by AutoSpeed to complement the line of performance tuning software for Audi, Volkswagen and Porsche automobiles.

The SpeedPORT application has 3 main functions: Profiles, Scan Codes and DataDASH.
Harry's Lap Timer Pro Icon
Harry's Lap Timer Pro
     


Harry's LapTimer is the advanced tool for car enthusiasts. It records all types of sensor data provided by your iPhone/iPod/iPad (or external sensors), combines them, and makes them available to optimize your drive. Over time, you will get insights on your car and in your driving.

LapTimer offers more than 300 predefined tracks worldwide. With its assistants, it is extremely easy to setup - just click your track and drive. It fully automates your lap timing using GPS, and presents the results to all kinds of media.

You are not limited to track driving only. For example, you may define your home and working locations as a 'track', collect statistics on different ways chosen, and analyze / optimize the time used every day.

Want to show your drive to your friends? LapTimer generates beautiful in-car video recordings with all kinds of data overlaid, ready to be presented - e.g. on YouTube. Even without video, recorded data can be analyzed using purpose designed views, making it easy to analyze and improve your driving performance. Using online racing, you can use LapTimer in competition. LapTimer offers a Hall of Fame, which allows for watching you and your friends on track - all in real time. Compare your sector times, braking / acceleration points, and learn from each other.

You can start with your plain iPhone in the beginning and add external GPS and OBD II sensors later, step by step, as you need them. LapTimer comes in three different versions. LapTimer Standard can be enhanced later by added in app purchase features, LapTimer Professional is the 'all-in-one with free lifetime updates' version dedicated to the iPhone and iPod. Finally, there is an iPad optimized version named LapTimer Trainer. Please note that functionality depends on your device, the LapTimer version chosen, and sometimes even external sensors added (like OBD II). Check our home page for details.

There are quite expensive stand alone solutions for track days available. Be smart and own the leading edge tool simply by using your iPhone and LapTimer. Besides the professional area, there is no known solution that offers more functionality than LapTimer does - across the market. As our ambition is to offer the best tool, LapTimer is continuously enhanced.

Please visit https://www.gps-laptimer.de for detailed information on versions, FAQs / documentation, in-depth technology background information, online racing, and supported device configurations. Join our user community at https://www.gps-laptimer-forum.de to be involved in future development - all with first class support.
BMWhat Icon
BMWhat
     


Would you like to diagnose your BMW?

With this app you can read out BMW specific and OBD fault codes (DTCs) like the experts.

While normal OBD Readers are limited to a small number of electronic control units (ECUs) and even a smaller number of fault codes, this app reads out practically all compatible BMW specific ECUs.

Normally this is only possible with very expensive expert equipment.

Now you can check your car yourself in-depth!

It provides modell specific fault code explanations.

...and you can even clear the stored BMW DTC fault codes - not just OBD!

PLEASE TRY THE FREE LITE VERSION FIRST TO VERIFY COMPATIBILITY!

For a demo you may like to check www.iViNi-apps.com


Harry's Lap Timer Pro Icon
OBIE
     


OBIE is an excellent and easy to use Automotive Gauge Display that lets users access real time data such as boost, coolant temp, and miles per gallon through the OBD-II port.

OBIE brings important vehicle information to a user's vehicle with an intuitive design for quick access to three scrolling gauges.

  • OBIE supports the following parameters (also depends on vehicle itself)
  • Ambient Air Temperature
  • Barometric Pressure
  • Boost (MAP)
  • Coolant Temperature
  • Engine Load
  • Fuel Pressure
  • Instantaneous Miles Per Gallon
  • Intake Air Temperature
  • Oil Temperature
  • Speed
  • RPM
  • Timing Advance
  • Throttle Position
  • Voltage
  • MIL Status

 
 
DragFX App Icon
DragFX
     


Have you ever wanted to own a muscle car but found it too expensive? Or maybe you would like to have that loud muscle car sound in your Eco friendly car? Now you can! Drag FX is the application for you. Drag Fx works in coordination with the Kiwi 2 Wifi dongle sending information to your Iphone Ipad or Ipod thus creating a muscle car engine sound. This sound will match the RPM in real time.

ScanXL™ Professional
ScanXL™ is our professional line of diagnostic scan tools. Built on top of our advanced scan tool technology, ScanXL™ delivers the full range of generic diagnostics for any OBD-II compliant vehicle sold worldwide, along with providing manufacturer-enhanced diagnostics for many vehicle types. It gives you access not only to the powertrain systems, but also ABS, airbag, and other proprietary systems that would otherwise require expensive dealer tools to work with. It allows viewing, charting, logging and playback of diagnostic data in real time via the vehicle's OBD-II diagnostic data port. It also allows viewing of vehicle Diagnostic Trouble Codes (DTC's), Freeze Frame data, and other vehicle information.

ScanXL™ supports 1996* and newer vehicles whether it be US, Asian, or European.

Supported OBD-II protocols: SAE-J1850 (PWM and VPW), ISO-9141, ISO-14230 (KWP2000), and ISO-15765 (CAN).

Visit our user forum for discussion and information about ScanXL™, product features, and new releases.
*1996 is the year the OBD-II system was standardized for passenger vehicles sold in the United States. In Europe, this was standardized in 2001 for gasoline vehicles and 2004 for diesel passenger cars. Please verify that your vehicle is OBD compliant before purchasing.
J2534 Overview
Legislation has mandated that vehicle manufacturers meet J2534 standards for all emissions related systems on all new vehicles starting with model year 2004. This standard enables independent service repair operators to program or reprogram (reflash) emissions related ECUs on a wide variety of vehicle manufacturers with a single hardware interface. Our ScanXL™ Professional diagnostic software supports all J2534 compliant pass-thru OBD-II interfaces. If you plan to buy or already use a J2534 interface in your service or repair facility to update vehicle software calibrations, our ScanXL™ product will be the perfect addition to your tool set. With no additional hardware costs, ScanXL™ Professional will give you access to dealer-level diagnostic capabilities for thousands less!
Manufacturer Enhanced Diagnostics
If you are the owner of an independent service or repair facility then you know that good tools can mean the difference between being able to find and fix the problem, or having to send the customer elsewhere. With generic only OBD-II scan tools you often cannot service some vehicle systems like ABS, airbag, or other proprietary systems. Using our ScanXL™ diagnostic scan tool, you now have access to dealer-level diagnostic capabilities for not only the powertrain systems, but also ABS, airbag, and other proprietary systems that would otherwise require expensive dealer tools to work with*.

We currently support the following vehicle types:
Ford, Lincoln, Mercury(1996-2009)
GM(1996-2009)
Mazda(1996-2009)
Chrysler, Dodge, Plymouth, Jeep, EagleComing Soon!
Toyota, Lexus, ScionComing Soon!
*Requires purchase of an enhanced diagnostics add-on package.
ScanXL™ Features
Vehicle Manager
  • Using the ScanXL™ Vehicle Manager you can keep track of multiple vehicles and owners simultaneously.
  • All vehicle specific information is stored in the Vehicle Manager.
  • Automatically keeps track of VIN (if available) and date and time of last diagnostic session.
  • When adding new vehicles, supports easy vehicle lookup through the built-in vehicle database.
Virtual Dashboards
  • With our patent-pending DashXL™ technology you get high quality dashboards on any screen size.
  • Highly configurable realistic looking gauges.
  • Gauges can be moved, resized, and laid out to resemble your own dashboard.
  • Virtual dashboard layouts can be loaded and saved from pre-existing templates or your own custom creations.
  • Gauges can be configured to report the minimum, maximum, and average values of the parameter being monitored.
  • Highly configurable graphs allow simultaneous graphing of up to 8 parameters per graph.
  • Tables can be placed on virtual dashboards and customized to report any parameters you want.
  • Maps can be placed on virtual dashboards and customized to display a full 3D view of any desired parameters.
  • You can set up an unlimited number of gauges, graphs, tables, and maps on your virtual dashboard.
Drag Strip and Dyno
  • The drag strip displays a countdown and timing light and measures your launch and reaction time. At the end of your run, you get a timeslip with the stats from the run.
  • Measures reaction time, 60' time, 330' time, 0-60 MPH, 1/8 mile ET, 1/8 mile speed, 1000' time, 1/4 mile ET, 1/4 mile speed.
  • If you use aftermarket performance parts, the new digital dyno feature will let you test horsepower and torque to measure their impact on your vehicle's performance-- just try out the dyno and see if those parts were worth the money!
  • Supports both English and Metric units of measurement.
Data Logging
  • Currently supports over 220 generic OBD-II parameters, including O2 sensors.
  • You can record and playback log files in real time (1ms logging accuracy).
  • You can save and load your log files for offline analysis.
  • Playback speed can be adjusted to play faster or slower than real time.
  • There are no restrictions on how much data you can log, it is only limited by how fast your OBD-II interface cable can send the data and by how much memory you have in your computer.
  • English and Metric (SI) unit measurement systems supported.
  • Customizable log file data export to .CSV file for easy viewing in other programs like Excel.
  • Export with real-time stamps for easy correlation with external data logs.
  • PIDs can be assigned priorities to speed up the data capture rate.
  • Full support for data log file bookmarks - if you notice the engine misfiring or some other problem, using the log file bookmarks you can just reach over and press F6 to add a bookmark into the logged data that is being recorded. Then you can come back at any time and see exactly where the bookmark is and view the surrounding frames of data to analyze the problem.
Trouble Codes
  • Read stored and pending Diagnostic Trouble Codes.
  • Clear the Check Engine or Service Engine Soon indicator light.
  • Read and clear stored Freeze Frame data.
  • Supports thousands of vehicle trouble code definitions.
Test Results
  • Read the status of Continuously and Non-Continuously Monitored Tests.
Miscellaneous
  • Full support for printing and print preview.
  • All of the different views, including the virtual dashboards, support printing/print preview.
  • For those who possess a knowledge of the OBD-II protocol, ScanXL™ provides an OBD-II Terminal where you can send custom commands to the vehicle.
  • For the power users out there, ScanXL™ has built-in Javascripting support to do custom calculations on OBD-II parameters and data.
  • Configurable alerts system - the alerts system allows you to configure the software to monitor any parameter(s) you like. When the specified conditions are met, the software will automatically play a sound (to warn you if you are driving) or insert a bookmark for you into the logged data that is being recorded.
  1. OBD II Plug
  2. 3' Cable
  3. Power Indicator LED
  4. Link Indicator LED
  5. Wake From Sleep Button
  6. iMFD Adapter Port
Physical Dimensions: 1.25 x 2.72 x 0.60
Power Consumption: 1.24 Watts (Typical), 0.1Watt(Sleep)
Power Saving: Intelligent low power sleep circuitry
OBDII/CAN Protocols: ISO-9141, VPW, PWM, KWP 2000, 11Bit CAN, 29Bit CAN
Compatible Vehicles: 1996 and later vehicles
Operating Temperature: 0 - 80 Degress Celsius
Operating Voltage: 10 - 18V
Wireless Standard: Wifi 802.11 a/b/g
Range: ~50ft line of sight
Enclosure: Automotive Grade Plastic
Additional Sensor Support: Compatible with PLX iMFD Daisy Chain Adapter

* = Using the Kiwi Wifi with Torque requires rooting your Android phone. PLX Devices does not advise this option. Please see Kiwi Bluetooth
  • Kiwi 2 Wifi Main Unit
  • User Manual
  • * All applications are downloaded through the Apple App Store.
    Some apps may need to be purchased separately from the Kiwi Wifi.
Depending on your vehicle and the application that you choose to use, sensor support will vary. However in most vehicles the following sensors are reported through the onboard diagnostic port.
  • RPM
  • Vehicle Speed
  • Throttle Position
  • Engine Load
  • Absolute Engine Load
  • Engine Timing
  • Air Intake Temperature
  • Coolant Temperature
  • Ambient Air Temperature
  • Intake Pressure (MAP)
  • Air Flow (MAF)
  • Fuel Pressure
  • Fuel Pressure Relative
  • Fuel Level
  • Barometric Pressure
  • Catalytic Converter Temperature
  • ECU Voltage
  • OBD Type
  • Short Term Fuel Trim (Bank 1)
  • Long Term Fuel Trim (Bank 1)
  • Short Term Fuel Trim (Bank 2)
  • Long Term Fuel Trim (Bank 2)
  • Oxygen Sensor Voltage1 (Bank 1)
  • Oxygen Sensor Voltage1 (Bank 2)
  • Oxygen Sensor Voltage2 (Bank 1)
  • Oxygen Sensor Voltage2 (Bank 2)
The Kiwi Car to Smartphone line of products has received these awards:
SEMA Best New Mobile Electronics Entertainment Product, Best New Interior Accessory Product 2008
Popular Mechanics Editor's Choice Award 2009
SEMA Global Media Choice Award
SEMA Best New Mobile Electronics Entertainment Award 2010
Numerous Global Media Choice Awards 2010-2011
Popular Mechanics Editors Choice Award
Sensor Address Units Min Max
Wideband O2 0 0 - Lambda 0.68 1.36
1 - Gasoline (14.7) 10 20
2 - Diesel (14.6) 9.93 19.86
3 - Methanol (6.4) 4.35 8.7
4 - Ethanol (9.0) 6.12 12.24
5 - LPG (15.5) 10.54 21.08
6 - CNG (17.2) 11.7 23.39
7 - E85 (9.76) 6.64 13.27
Exhaust Gas Temp 1 0 - Celsius 0 1023
1 - Fahrenheit 32 1873
Fluid Temp 2 0 - Celsius Water 0 150
1 - Fahrenheit Water 32 302
2 - Celsius Oil 0 150
3 - Fahrenheit Oil 32 302
Vacuum 3 0 - Vac in/Hg 29.93 0
1 - Vac mm/Hg 760 0
Boost 4 2 - Boost 0-30 PSI 0 30
3 - Boost 0-2 kg/cm2 0 2.07
4 - Boost 0-15 PSI 0 15
5 - Boost 0-1 kg/cm2 0 1.12
Air Intake Temp 5 0 - Celsius 0 150
1 - Fahrenheit 32 302
RPM 6 0 - 8k 0 8000
1 - 12k 0 12000
2 - 20k 0 20000
Speed 7 0 - MPH 0 160
1 - km/H 0 258
Throttle Position 8 0 - Percent 0 100
Engine Load 9 0 - Percent 0 100
Sensor Address Units Min Max
Fluid Pressure 10 0 - PSI Fuel 0 120
1 - kg/cm2 Fuel 0 8.44
2 - Bar Fuel 0 8.27
3 - PSI Oil 0 120
4 - kg/cm2 Oil 0 8.44
5 - Bar Oil 0 8.27
Timing 11 0 - Degree -64 64
Manifold Absolute 12 0 - kPa 0 255
Pressure (MAP) 1 - inHg 0 75.3
Mass Air Flow (MAF) 13 0 - g/s 0 655.35
1 - lb/min 0 86.69
Short Term Fuel Trim 14 0 - Percent -100 100
Long Term Fuel Trim 15 0 - Percent -100 100
Narrowband O2 16 0 - Percent 0 100
1 - Volts 0 1.275
Fuel Level 17 0 - Percent 0 100
Volt Meter 18 0 - Volts 0 20
Knock 19 0 - Volts 0 5
Duty Cycle 20 0 - Positive 0 100
1 - Negative 0 100
Fuel Efficiency 21 0 - MPG 0 100
1 - KM/L 0.43 42.51
2 - L=100KM
Analog Voltage 22 0 - Volts 0 5
Speed (Hertz) 23 0 - Hz 0 10,230
In high performance applications where the speed, accuracy and resolution of standard vehicle sensors may not be sufficient for applications which require precise tuning and diagnostics, the iMFD adapter gives you the added option of obtaining aftermarket sensor data. Our wideband AFR, exhaust gas temperature, and vac/boost sensor modules are the most popular add-on sensors for performance vehicles. Anything with an "iMFD" badge is compatible with each other allowing you to daisy chain up to 16 modules in any combination.
The added benefit of the iMFD Adapter is that with every additional iMFD sensor module you add, your performance does not degrade. For example, if you're monitoring only 1 sensor from the OBDII port and your refresh rate is 5Hz, by monitoring 2 sensors, your refresh drops to 2.5Hz and so on. By adding 1 to 16 iMFD sensors, your refresh rate is always kept constant at 10Hz. This results in higher performance monitoring for even the most demanding applications.
PLX Presents the New Kiwi 2 Wifi


The Ultimate Car to Smartphone Interface for Apple Products

SUNNYVALE, CA July 5, 2012. PLX Devices Inc. presents the new Kiwi 2 Wifi. The ultimate car to smartphone interface is compatible with iPhone/iPod Touch/iPad. The Kiwi 2 Wifi integrates with 1996 and later vehicles and installs in seconds. Connection is made through the vehicle's OBDII/CAN port located near or under the steering wheel. Interfacing with a vehicle's on board computer allows for monitoring fuel efficiency MPG, viewing real-time gauges, read/resetting engine check trouble codes and much more. The new Kiwi 2 Wifi will retail for just $119.99.

"The new Kiwi 2 Wifi sports tons of improvements," said Paul Lowchareonkul, PLX's CEO. "It's thinner, more affordable, automatically sleeps to prolong battery life and is compatible with aftermarket sensors with the iMFD Adapter accessory. It's a must have tool for any automotive enthusiast."

Kiwi 2 Wifi supports the highest number of apps for any car to smartphone interface today. These powerful apps enable analyzing engine check trouble codes, viewing real-time gauges, calculating fuel efficiency MPG, performing real-time dyno runs, logging data, creating and viewing GPS track mapping, monitoring road holding skid pad G's, video recording and data overlay for track days and also interface with aftermarket automotive sensors such as wideband AFR, boost, and much more.

The Kiwi 2 Wifi includes several improvements over the first generation Kiwi Wifi. It now comes with a sleek new design and is 0.25 inches thinner. The cable length has been reduced from 6 feet to 3 feet, making for a cleaner permanent installation. It is compatible with ISO 9141, VPW, PWM, KWP2000, and CAN protocols.

The Kiwi 2 Wifi incorporates a new advanced power saving circuit, designed to shut off power to essential functions of the unit allowing the Kiwi 2 Wifi to be permanently installed in a vehicle without draining the vehicle's battery. After 5 minutes of inactivity, the Kiwi 2 Wifi automatically enters a low power sleep mode. To turn the unit back on, a simple press of the soft button wakes the device back up.

The Kiwi 2 Wifi includes an 8 pin port on the back designed for the PLX iMFD Adapter. This allows a connection to high performance aftermarket sensors such as wideband air/fuel ratio, exhaust gas temperature, vacuum/boost, air intake temperature, fluid pressure and fluid temperature. This solution is desired for applications where vehicles do not support certain sensors and/or the car's computer does not report them. With the PLX iMFD Adapter attached, the best of both worlds of fully plug and play OBDII/CAN data as well as high performance aftermarket sensors can be obtained.

PLX Devices Inc. pioneered the Car to Smartphone revolution with the first generation Kiwi Wifi in 2010, winning a SEMA award for Best Mobile Electronics Accessory, Popular Mechanics Editors Choice Award and 11 global media awards. PLX is committed to excellence and innovation in the automotive aftermarket industry. A Silicon Valley California Company, PLX Devices Bringing the Future. Visit www.plxdevices.com

Press Contact:
Timothy Oravec
PLX Devices Inc.
tim@plxdevices.com
(408)745-7591
Kiwi Software Development Kit Documentation
Terms of Use
YOU EXPLICITLY UNDERSTAND AND AGREE THAT USE OF THE API AND CONTENT IS AT YOUR SOLE RISK AND THAT PROVIDED CONTENT IS PROVIDED "AS IS." PLX DEVICES INC. SHALL NOT BE LIABLE FOR DIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES RESULTING FROM ANY LEGAL THEORY INCLUDING, BUT NOT LIMITED TO, LOST PROFITS, DOWNTIME, GOODWILL, DAMAGE, INJURY TO PERSONS, OR REPLACEMENT OF EQUIPMENT AND PROPERTY DUE TO IMPROPER INSTALLATION, INTEGRATION AND/OR MISUSE OF ANY PLX DEVICES INC.'S PRODUCT(S) AND DOCUMENTATION.
Overview
The PLX Kiwi Wifi is an OBD-II to IEEE 802.11 wireless Ethernet adapter.
The PLX Kiwi Bluetooth is an OBD-II to Bluetooth adapter.

The Kiwi iMFD Adapter is an addon adapter for the Kiwi 2 Wifi that offers iMFD serial data support in addition to available OBD-II information.
Products
Kiwi 2 Wifi Kiwi Bluetooth iMFD Adapter
Kiwi 2 Wifi Kiwi 2 Bluetooth iMFD Adapter
Block Diagram
The Kiwi 2 Wifi and Kiwi Bluetooth are equivalent in functionality. Both the Kiwi 2 Wifi and Kiwi Bluetooth have a built-in OBD interface. For additional PLX iMFD sensor support, the iMFD adapter can be connected to the Kiwi 2 Wifi and programmatically accessed via an internal mode selector switch.
Kiwi 2 Wifi/Kiwi Bluetooth
Kiwi 2 Wifi/Kiwi Bluetooth Block Diagram
Kiwi 2 Wifi with iMFD Adapter
Kiwi + iMFD Block Diagram
Connecting to Kiwi
To communicate with the Kiwi Wifi, connect to the following IP address and port:

SSID: PLXDevices
IP: 192.168.0.10:35000

For the Kiwi Bluetooth, pair to the device with the following pairing code:

Device Name: PLXDevices-XXXX
Pairing Code: 1234
Setting Sensor Mode (iMFD Adapter)
With the iMFD Adapter connected, there are two modes of operation: OBD mode and iMFD mode. In OBD mode you have access and control of the OBD interface. In iMFD mode, you have access to the PLX iMFD serial stream. These modes can be switched by sending a '+' or '-' ASCII character.
OBD Mode
Send the ASCII character '+' (Decimal value = 43, Hex value = 2B) to set the mode to OBD. Kiwi Wifi/Bluetooth OBD Mode
iMFD Mode
Send the ASCII character '-' (Decimal value = 45, Hex value = 2D) to set the mode to iMFD. Kiwi Wifi + iMFD iMFD Mode
Communicating with Kiwi
Communicating with the Kiwi Wifi is made by writing and reading ASCII values to and from the TCP stack.

Communicating with the Kiwi Bluetooth is made by reading and writing ASCII values via a serial stream.
Request Formats
OBD Mode
To signify that the Kiwi Wifi or Kiwi Bluetooth is ready to process commands, the device will output a greater-than sign (>).
The Kiwi Wifi and Kiwi Bluetooth supports ten diagnostic modes as defined in the SAE J1979 standard:
Test modeDescription
01Show current data
02Show freeze frame data
03Show diagnostic trouble codes
04Clear trouble codes and stored values
05Test results, oxygen sensors
06Test results, non-continuously monitored
07Show 'pending' trouble codes
08Special control mode
09Request vehicle information
0ARequest permanent trouble codes
Requesting information can be done by sending a command in this format (ASCII characters):
MM PP\r
where MM is the test mode, PP is the PID, and \r is a carriage return (hex: 0x0d). All whitespace characters are ignored by the Kiwi. *Test modes 03 and 04 do not require a PID value.
For example, requesting current RPM is done as follows:
01 0C\r
The PID response from the Kiwi Wifi or Kiwi Bluetooth is in this format:
NN PP AA [BB] [...]
where the NN represents the test mode + 40 (e.g. 01 + 40 = 41). PP is the requested PID, and all following characters are data bytes.

The number of returned bytes is dependent on the particular PID requested. For details on PIDs supported by most vehicles and the number of returned bytes, please see "Requesting Data".

Here is an example response from the Kiwi Wifi after requesting the current RPM:
41 0C FF FF
The data bytes "FF FF" are ASCII representations of hexadecimal characters for the data. In this case, the "FF FF" would be interpreted as the hexadecimal value of 0xFFFF (65536 in decimal base). An example function for converting this value to meaningful data is outlined in Section 11.

Other responses are possible as well. A table of responses can be seen below:
ResponseDescription
?Command not understood
BUFFER FULLInternal buffer full
BUS ERRORInvalid singal detected on bus
CAN ERRORUnable to initialize, send or receive CAN data
DATA ERRORIncorrect or invalid response from vehicle
NO DATANo data response for request
OKCommand successful
SEARCHING...Connecting to vehicle
UNABLE TO CONNECTNo valid OBD protocol found
iMFD Mode
Switching the Kiwi to iMFD mode will automatically read the serial data from any attached sensor modules. The data packet format for the iMFD serial stream is formatted as below:
Start Bit
/*Start first sensor*/
Sensor Address MSB (Bits 6-11)
Sensor Address LSB (Bits 0-5)
Sensor Instance
Sensor Data MSB (Bits 6-11)
Sensor Data LSB (Bits 0-5)
/*End first sensor*/
//Additional sensors/instances are included before the stop bit
Stop Bit
Please note that the two most significant bits of each packet is reserved for the start bit and the stop bit.

Start Bit = 0x80(hex) = 1000 0000 (binary)
Stop Bit = 0x40(hex) = 0100 0000 (binary)

The 6 least significant bits are reserved for Address, Instance, and Data. This means that the two most significant bits MUST BE ZERO for these bytes. To interpret the Sensor Address and Data Value a bitwise conversion must be done.

An example conversion for address bits and data bits is as follows:
addr = (addrmsb << 6) | addrlsb; //Use this for true address value
data = (datamsb << 6) | datalsb; //Use this for true data value
For multiple sensor modules, the Instance byte is automatically incremented by 1 for each sensor module of the same address in the chain. Here is an example of two SM-AFR sensor modules:
0x80 //Start bit
0x00 //First SM-AFR Address MSB
0x00 //First SM-AFR Address LSB
0x00 //First SM-AFR Instance 1
0x00 //First SM-AFR Data MSB
0x04 //First SM-AFR Data LSB
0x00 //Second SM-AFR Address MSB
0x00 //Second SM-AFR Address LSB
0x01 //Second SM-AFR Instance 2 //value incremented
0x00 //Second SM-AFR Data MSB
0x05 //Second SM-AFR Data LSB
0x40 //Stop bit
When iMFD mode is active, the Kiwi automatically incorporates a flow control to improve performance when writing applications for the iPhone or iPod touch. When the '-' character is sent, the hardware waits for the start bit to arrive and only passes one complete frame. It then waits indefinitely. A '+' followed by a carriage return is necessary to get back to OBD Mode.
Start bit ... Stop bit (waits indefinitely) (send a '+' then carriage return then '-' to obtain the next frame)
*It is recommended that you send a carriage return (\r) character to obtain the '>' character in order for the "OBD mode" to be ready for its next command.

The flow control guarantees that the first iMFD byte that is transmitted back is a start bit and the last byte is a stop bit. One complete iMFD frame will be available each time the iMFD mode is activated.

For a list of iMFD sensors, please see PLX iMFD Sensor Table.
Custom PIDs
Manufacturer-specific PIDs and custom PIDs are supported by the Kiwi Wifi and Kiwi Bluetooth.

Please note that manufacturer-specific information typically requires a licensing fee for code and/or algorithm access. PLX Devices cannot and will not provide any manufacturer-specific information.
Suggested Initialization Sequence
//C-pseudo code to reset device and read data
WriteTCP("atz\r"); //Resets device
WriteTCP("ate0\r"); //Turns echo off
Data = RequestPIDData(0x11, 1); //Request data from vehicle

if(PIDReadStatus == 2 | PIDReadStatus == 3) { //Check connection status
   OBDConnected = 0;
} else { //Connected
   OBDConnected = 1;
}
Requesting Data
SensorPID Value (Hex)Returned bytes
*Absolute Throttle Position111
*Engine RPM0C2
*Vehicle Speed0D1
*Calculated Load Value041
*Timing Advance (Cyl#1)0E1
*Intake Manifold Pressure0B1
*Air Flow Rate (MAF Sensor)102
*Fuel System Status032
*Short Term Fuel Trim (Bank 1)062
*Long Term Fuel Trim (Bank 1)072
*Short Term Fuel Trim (Bank 2)082
*Long Term Fuel Trim (Bank 2)092
*Intake Air Temperature0F1
*Coolant Temperature051
Fuel Pressure (gauge)0A1
*O2 Sensor 1, Bank 1142
*O2 Sensor 2, Bank 1152
O2 Sensor 3, Bank 1162
O2 Sensor 4, Bank 1172
O2 Sensor 1, Bank 2182
O2 Sensor 2, Bank 2192
O2 Sensor 3, Bank 21A2
O2 Sensor 4, Bank 21B2
Time Since Engine Start1F2
Fuel Level Input2F1
Barometric Pressure (Absolute)331
Catalytic Converter Temp B1S13C2
Catalytic Converter Temp B2S13D2
Catalytic Converter Temp B1S23E2
Catalytic Converter Temp B2S23F2
ECU Voltage422
Absolute Engine Load432
Ambient Air Temperature461
*Denotes sensor is available in most vehicles. Additional sensors are available depending on vehicle specific models.

//Bluetooth communication will require write(byte[]) and read(byte[]) instead of WriteTCP() and ReadTCP()
int RequestPIDData(int PID,int bytes) //Pseudo C Code Example
{
  int lsb,msb;
  char c;
  int b0,b1,b2,b3,b4,b5,b6,b7;
  int Data;
 
  lsb = (PID & 0x0f);
  msb = ((PID & 0xf0)>>4);

  WriteTCP('0');
  WriteTCP('1');

  if(msb == 0)
   WriteTCP('0');
  else if(msb == 1)
   WriteTCP('1');
  else if(msb == 2)
   WriteTCP('2');
  else if(msb == 3)
   WriteTCP('3');
  else if(msb == 4)
   WriteTCP('4');
  else if(msb == 5)
   WriteTCP('5');
  else if(msb == 6)
   WriteTCP('6');
  else if(msb == 7)
   WriteTCP('7');
  else if(msb == 8)
   WriteTCP('8');
  else if(msb == 9)
   WriteTCP('9');
  else if(msb == 10)
   WriteTCP('A');
  else if(msb == 11)
   WriteTCP('B');
  else if(msb == 12)
   WriteTCP('C');
  else if(msb == 13)
   WriteTCP('D');
  else if(msb == 14)
   WriteTCP('E');
  else if(msb == 15)
   WriteTCP('F');

  if(lsb == 0)
   WriteTCP('0');
  else if(lsb == 1)
   WriteTCP('1');
  else if(lsb == 2)
   WriteTCP('2');
  else if(lsb == 3)
   WriteTCP('3');
  else if(lsb == 4)
   WriteTCP('4');
  else if(lsb == 5)
   WriteTCP('5');
  else if(lsb == 6)
   WriteTCP('6');
  else if(lsb == 7)
   WriteTCP('7');
  else if(lsb == 8)
   WriteTCP('8');
  else if(lsb == 9)
   WriteTCP('9');
  else if(lsb == 10)
   WriteTCP('A');
  else if(lsb == 11)
   WriteTCP('B');
  else if(lsb == 12)
   WriteTCP('C');
  else if(lsb == 13)
   WriteTCP('D');
  else if(lsb == 14)
   WriteTCP('E');
  else if(lsb == 15)
   WriteTCP('F');
 
  WriteTCP(0x0d);

  while(!DataRdyTCP());
  c = ReadTCP();

  if(c == 'N')
  {
   PIDReadStatus = 1; //No Data

   //Wait for OK>
   while(c != 0x3E)
   {
   while(!DataRdyTCP());
   c = ReadTCP();
   }
   return 0;
  }
  else if(c == 'S')
  {
   PIDReadStatus = 2; //Searching

   //Wait for OK>
   while(c != 0x3E)
   {
   while(!DataRdyTCP());
   c = ReadTCP();
   }
   return 0;
  }
  else if(c != '4')
  {
   PIDReadStatus = 3; //Anything else

   //Wait for OK>
   while(c != 0x3E)
   {
   while(!DataRdyTCP());
   c = ReadTCP();
   }
   return 0;
  }

  while(!DataRdyTCP());
  c = ReadTCP();
  if(c != '1')
  {
   PIDReadStatus = 3; //Second character not 1

   //Wait for OK>
   while(c != 0x3E)
   {
   while(!DataRdyTCP());
   c = ReadTCP();
   }
   return 0;
  }

  while(!DataRdyTCP());
  c = ReadTCP(); //space
  while(!DataRdyTCP());
  c = ReadTCP(); //msb
  while(!DataRdyTCP());
  c = ReadTCP(); //lsb
  while(!DataRdyTCP());
  c = ReadTCP(); //space

  if(bytes == 1) //data
  {
   while(!DataRdyTCP());
   b0 = ReadTCP();
   while(!DataRdyTCP());
   b1 = ReadTCP();
   b0 = CharToInt(b0);
   b1 = CharToInt(b1);

   Data = (b0<<4) + b1;

   PIDReadStatus = 0;

   //Wait for OK>
   while(c != 0x3E)
   {
   while(!DataRdyTCP());
   c = ReadTCP();
   }
   return Data;
  }
  else if(bytes == 2) //data
  {
   while(!DataRdyTCP());
   b0 = ReadTCP();
   while(!DataRdyTCP());
   b1 = ReadTCP();
   while(!DataRdyTCP());
   c = ReadTCP();
   while(!DataRdyTCP());
   b2 = ReadTCP();
   while(!DataRdyTCP());
   b3 = ReadTCP();

   b0 = CharToInt(b0);
   b1 = CharToInt(b1);
   b2 = CharToInt(b2);
   b3 = CharToInt(b3);

   Data = (b0<<12) + (b1<<8) + (b2<<4) + b3;

   PIDReadStatus = 0;

   //Wait for OK>
   while(c != 0x3E)
   {
   while(!DataRdyTCP());
   c = ReadTCP();
   }
   return Data;
  }
  else if(bytes == 4) //data
  {
   while(!DataRdyTCP());
   b0 = ReadTCP();
   while(!DataRdyTCP());
   b1 = ReadTCP();
   while(!DataRdyTCP());
   c = ReadTCP();
   while(!DataRdyTCP());
   b2 = ReadTCP();
   while(!DataRdyTCP());
   b3 = ReadTCP();
   while(!DataRdyTCP());
   c = ReadTCP();
   while(!DataRdyTCP());
   b4 = ReadTCP();
   while(!DataRdyTCP());
   b5 = ReadTCP();
   while(!DataRdyTCP());
   c = ReadTCP();
   while(!DataRdyTCP());
   b6 = ReadTCP();
   while(!DataRdyTCP());
   b7 = ReadTCP();

   b0 = CharToInt(b0);
   b1 = CharToInt(b1);
   b2 = CharToInt(b2);
   b3 = CharToInt(b3);
   b4 = CharToInt(b4);
   b5 = CharToInt(b5);
   b6 = CharToInt(b6);
   b7 = CharToInt(b7);

   Data = (b0<<28) + (b1<<24) + (b2<<20) + (b3<<16) + (b4<<12) + (b5<<8) + (b6<<4) + b7;

   PIDReadStatus = 0;

   //Wait for OK>
   while(c != 0x3E)
   {
   while(!DataRdyTCP());
   c = ReadTCP();
   }
   return Data;
  }
}

int CharToInt(int c)
{
  int i;

  if(c == 48) //'0'
   i = 0;
  else if(c == 49) //'1'
   i = 1;
  else if(c== 50) //'2'
   i = 2;
  else if(c== 51) //'3'
   i = 3;
  else if(c== 52) //'4'
   i = 4;
  else if(c== 53) //'5'
   i = 5;
  else if(c== 54) //'6'
   i = 6;
  else if(c== 55) //'7'
   i = 7;
  else if(c== 56) //'8'
   i = 8;
  else if(c== 57) //'9'
   i = 9;
  else if(c== 65) //'A'
   i = 10;
  else if(c== 66) //'B'
   i = 11;
  else if(c== 67) //'C'
   i = 12;
  else if(c== 68) //'D'
   i = 13;
  else if(c== 69) //'E'
   i = 14;
  else if(c== 70) //'F'
   i = 15;

  return i;
}
Interpreting Returned Data
This function is used to convert the returned raw PID data into meaningful values.

//Pseudo C Code Example
int PIDConversion(int PID, int Data, int Units)
//Units parameter: 0 = Standard Units, 1 = Metric Units
{
 double tempMPH;

 if(PID == 0x11)  //Throttle
  return Data*100/255;
 else if(PID == 0x0c)  //RPM
  return Data/4;
 else if(PID == 0x0d)  //Speed
 {
  if(Units == 0)  // MPH
{
   tempMPH = Data/1.609;
   return(Round(tempMPH));
  }
  else
   return Data; //KM/H
 }
 else if(PID == 0x04)  //Engine Load
  return Data*100/255;
 else if(PID == 0x0E)  //Timing Advance
 {
  if(Data < 128)
   return (128 - Data)/2;
  else
   return (Data - 128)/2;
 }
 else if(PID == 0x0B)  //Intake Manifold Pressure
 {
  if(Units == 0)
   return Data/0.3386; //inHG
  else
   return Data; //Kpa
 }
 else if(PID == 0x10)  //Air Flow Rate
 {
  if(Units == 0)
   return Round(Data*0.013227736); //LBS/min
  else
   return Round(Data*0.01);  //g/s
 }
 else if(PID == 0x03)  //Fuel System Status
  return (Data>>8) & 0xFF;
 else if((PID == 0x06)|(PID == 0x07)|(PID == 0x08)|(PID == 0x09)) //Fuel TRIM
 {
  if(Data < 128)
   return (128 - Data)*100/128;
  else
   return (Data - 128)*100/128;
 }
 else if((PID == 0x0F)|(PID == 0x05)) //AIT and Coolant
 {
  if(Units == 0)  //Fahrenheit
  {
   if(Data < 40)
    return 32;
   else
    return (Data-40)*9/5 + 32;
  }
  else    //Celsius
  {
   if(Data < 40)
    return 0;
   else
    return Data - 40;
  }
 }
 else if(PID == 0x0A) //Fuel Pressure
 {
  if(Units == 0) //PSI
   return Data*3*0.145;
  else   //KPA
   return Data*3;
 }
 else if(PID == 0x1C) //OBD TYPE
  return Data;
 else if((PID == 0x14)|(PID == 0x15)|(PID == 0x18)|(PID == 0x19)) //O2 Voltage
  return (Data >> 8)*0.5;
 else if(PID == 0x2F) //Fuel Level Input
  return Data*100/255;
 else if(PID == 0x33) //Barometric Pressure
 {
  if(Units == 0)
   return Data/0.3386; //inHG
  else
   return Data;  //Kpa
 }
 else if((PID == 0x3C)|(PID == 0x3D)|(PID == 0x3E)|(PID == 0x3F)) //CAT Temperature
 {
  Data = Data*0.1;

  if(Units == 0) //Fahrenheit
  {
   if(Data < 40)
    return 32;
   else
    return (Data-40)*9/5 + 32;
  }
  else   //Celsius
  {
   if(Data < 40)
    return 0;
   else
    return Data - 40;
  }
 }
 else if(PID == 0x42) //ECU Voltage
  return Data*0.01;
 else if(PID == 0x43) //ASB Engine Load
  return Data*100/255;
 else if(PID == 0x46) //Ambient Air Temperature
 {
  if(Units == 0) //Fahrenheit
  {
   if(Data < 40)
    return 32;
   else
    return (Data-40)*9/5 + 32;
  }
  else   //Celsius
  {
   if(Data < 40)
    return 0;
   else
    return Data - 40;
  }
 }
 else if(PID == 0x22) //FRP Rel
 {
  if(Units == 0)
   return Data*0.79*0.145; //PSI
  else
   return Data*0.79;  //Kpa
 }
}
Reset Trouble Code
//Pseudo C Code Example
void ResetTroubleCode()
{
 char c;

 //Clear Input Buffer Here

 //Reset Code
 WriteTCP('0');
 WriteTCP('4');
 WriteTCP(0x0d);

 //Wait for carriage return as precaution to system freeze.
 while(!DataRdyTCP());
 c = ReadTCP();
 //Wait for OK>
 while(c != 0x3E)
 {
  while(!DataRdyTCP());
  c = ReadTCP();
 }
}
Read Number of Trouble Codes
//Pseudo C Code Example
void RequestNumberTrouble()
{
 char c;

 //Clear Input Buffer Here

 WriteTCP('0');
 WriteTCP('1');
 WriteTCP('0');
 WriteTCP('1');
 WriteTCP(0x0d);

 while(!DataRdyTCP());
 c = ReadTCP();//4
 while(!DataRdyTCP());
 c = ReadTCP();//1
 while(!DataRdyTCP());
 c = ReadTCP();//space
 while(!DataRdyTCP());
 c = ReadTCP();//0
 while(!DataRdyTCP());
 c = ReadTCP();//1
 while(!DataRdyTCP());
 c = ReadTCP();//space
 while(!DataRdyTCP());
 c = ReadTCP();//0
 while(!DataRdyTCP());
 c = ReadTCP();//number of error codes
 
 errornumber = c;

 //The return string is long so wait for carriage return or else system will freeze.
 while(!DataRdyTCP());
 c = ReadTCP();
 //Wait for OK>
 while(c != 0x3E)
 {
  while(!DataRdyTCP());
  c = ReadTCP();
 }
}
Request Trouble Code
//Pseudo C Code Example
void RequestTroubleCodes(int count) // Reads back 3 codes only.
{
 int b0,b1,b2,b3; //Error 1
 int b4,b5,b6,b7; //Error 2
 int b8,b9,b10,b11; //Error 3
 int c;
 int x;

 if(count == 0)
  return;
 
 //Clear Input Buffer Here
  
 WriteTCP('0');
 WriteTCP('3');
 WriteTCP(0x0d);
 
 //Non-CAN protocols
 if(ConnectProtocol == 0)
 {
  while(!DataRdyTCP());
  c = ReadTCP();  //4
  while(!DataRdyTCP());
  c = ReadTCP();  //3
  while(!DataRdyTCP());
  c = ReadTCP();  //space
  while(!DataRdyTCP());
  b0 = ReadTCP(); //Error1
  while(!DataRdyTCP());
  b1 = ReadTCP(); //Error1
  while(!DataRdyTCP());
  c = ReadTCP();  //space
  while(!DataRdyTCP());
  b2 = ReadTCP(); //Error1
  while(!DataRdyTCP());
  b3 = ReadTCP(); //Error1
  while(!DataRdyTCP());
  c = ReadTCP();  //space
  while(!DataRdyTCP());
  b4 = ReadTCP(); //Error2
  
  while(!DataRdyTCP());
  b5 = ReadTCP(); //Error2
  while(!DataRdyTCP());
  c = ReadTCP();  //space
  while(!DataRdyTCP());
  b6 = ReadTCP(); //Error2
  while(!DataRdyTCP());
  b7 = ReadTCP(); //Error2
  while(!DataRdyTCP());
  c = ReadTCP();  //space
  while(!DataRdyTCP());
  b8 = ReadTCP(); //Error3
  while(!DataRdyTCP());
  b9 = ReadTCP(); //Error3
  while(!DataRdyTCP());
  c = ReadTCP();  //space
  while(!DataRdyTCP());
  b10 = ReadTCP(); //Error3
  while(!DataRdyTCP());
  b11 = ReadTCP(); //Error3
 }
 else //CAN
 {
  if(count <= 2)
  {
   while(!DataRdyTCP());
   c = ReadTCP();  //4
   while(!DataRdyTCP());
   c = ReadTCP();  //3
   while(!DataRdyTCP());
   c = ReadTCP();  //space
   while(!DataRdyTCP());
   c = ReadTCP();  //Number Trouble
   while(!DataRdyTCP());
   c = ReadTCP();  //Number Trouble
   while(!DataRdyTCP());
   c = ReadTCP();  //space
   while(!DataRdyTCP());
   b0 = ReadTCP(); //Error1
   while(!DataRdyTCP());
   b1 = ReadTCP(); //Error1
   while(!DataRdyTCP());
   c = ReadTCP();  //space
   while(!DataRdyTCP());
   b2 = ReadTCP(); //Error1
   while(!DataRdyTCP());
   b3 = ReadTCP(); //Error1
   while(!DataRdyTCP());
   c = ReadTCP();  //space
   while(!DataRdyTCP());
   b4 = ReadTCP(); //Error2
   while(!DataRdyTCP());
   b5 = ReadTCP(); //Error2
   while(!DataRdyTCP());
   c = ReadTCP();  //space
   while(!DataRdyTCP());
   b6 = ReadTCP(); //Error2
   while(!DataRdyTCP());
   b7 = ReadTCP(); //Error2
  }
  else //3 or more trouble codes
  {
   while(!DataRdyTCP());
   c = ReadTCP();
   //Wait for ':'
   while(c != ':')
   {
    while(!DataRdyTCP());
    c = ReadTCP();
   }

   while(!DataRdyTCP());
   c = ReadTCP();  //space
   while(!DataRdyTCP());
   c = ReadTCP();  //4
   while(!DataRdyTCP());
   c = ReadTCP();  //3
   while(!DataRdyTCP());
   c = ReadTCP();  //space
   while(!DataRdyTCP());
   c = ReadTCP();  //Number Trouble
   while(!DataRdyTCP());
   c = ReadTCP();  //Number Trouble
   while(!DataRdyTCP());
   c = ReadTCP();  //space
   while(!DataRdyTCP());
   b0 = ReadTCP(); //Error1
   while(!DataRdyTCP());
   b1 = ReadTCP(); //Error1
   while(!DataRdyTCP());
   c = ReadTCP();  //space
   while(!DataRdyTCP());
   b2 = ReadTCP(); //Error1
   while(!DataRdyTCP());
   b3 = ReadTCP(); //Error1
   while(!DataRdyTCP());
   c = ReadTCP();  //space
   while(!DataRdyTCP());
   b4 = ReadTCP(); //Error2
   while(!DataRdyTCP());
   b5 = ReadTCP(); //Error2
   while(!DataRdyTCP());
   c = ReadTCP();  //space
   while(!DataRdyTCP());
   b6 = ReadTCP(); //Error2
   while(!DataRdyTCP());
   b7 = ReadTCP(); //Error2
   while(!DataRdyTCP());
   c = ReadTCP();
   while(c != ':') //Wait for ':'
   {
    while(!DataRdyTCP());
    c = ReadTCP();
   }

   while(!DataRdyTCP());
   c = ReadTCP();  //space
   while(!DataRdyTCP());
   b8 = ReadTCP(); //Error3
   while(!DataRdyTCP());
   b9 = ReadTCP(); //Error3
   while(!DataRdyTCP());
   c = ReadTCP();  //space
   while(!DataRdyTCP());
   b10 = ReadTCP(); //Error3
   while(!DataRdyTCP());
   b11 = ReadTCP(); //Error3
  }
 }

 errb0 = b0;
 errb1 = b1;
 errb2 = b2;
 errb3 = b3;
 errb4 = b4;
 errb5 = b5;
 errb6 = b6;
 errb7 = b7;
 errb8 = b8;
 errb9 = b9;
 errb10 = b10;
 errb11 = b11;

 //For 4+ error codes - multiple lines are returned
 while(!DataRdyTCP());
 c = ReadTCP();
 //Wait for OK>
 while(c != 0x3E)
 {
  while(!DataRdyTCP());
  c = ReadTCP();
 }
}

void ErrorCodePrefix(int b0)
{
 if(b0 == 0)
 {
  hc = '0';
  thc = 'P';
 }
 else if(b0 == 1)
 {
  hc = '1';
  thc = 'P';
 }
 else if(b0 == 2)
 {
  hc = '2';
  thc = 'P';
 }
 else if(b0 == 3)
 {
  hc = '3';
  thc = 'P';
 }
 else if(b0 == 4)
 {
  hc = '0';
  thc = 'C';
 }
 else if(b0 == 5)
 {
  hc = '1';
  thc = 'C';
 }
 else if(b0 == 6)
 {
  hc = '2';
  thc = 'C';
 }
 else if(b0 == 7)
 {
  hc = '3';
  thc = 'C';
 }
 else if(b0 == 8)
 {
  hc = '0';
  thc = 'b';
 }
 else if(b0 == 9)
 {
  hc = '1';
  thc = 'b';
 }
 else if(b0 == 10)
 {
  hc = '2';
  thc = 'b';
 }
 else if(b0 == 11)
 {
  hc = '3';
  thc = 'b';
 }
 else if(b0 == 12)
 {
  hc = '0';
  thc = 'U';
 }
 else if(b0 == 13)
 {
  hc = '1';
  thc = 'U';
 }
 else if(b0 == 14)
 {
  hc = '2';
  thc = 'U';
 }
 else if(b0 == 15)
 {
  hc = '3';
  thc = 'U';
 }
}

int GetProtocol() //returns 1 for CAN, 0 for other
{
 char c;
 char s[15];
 int x;

 //Clear Input Buffer Here
 
 WriteTCP('a');
 WriteTCP('t');
 WriteTCP('d');
 WriteTCP('p');
 WriteTCP(0x0d);

 getsTCP (s, 15); //Get a string of 15 characters

 //The return string is long so wait for carriage return or else system will freeze.
 while(!DataRdyTCP());
 c = ReadTCP();
 //Wait for OK>
 while(c != 0x3E)
 {
  while(!DataRdyTCP());
  c = ReadTCP();
 }

 for(x=0;x<11;x++)
 {
  if((s[x] == '1') & (s[x+1] == '5') & (s[x+2] == '7'))
   return 1;
 }
 return 0;
}
PLX iMFD Sensor Table
Sensor Address Units Min Max
Wideband O2 0 0 - Lambda 0.68 1.36
1 - Gasoline (14.7) 10 20
2 - Diesel (14.6) 9.93 19.86
3 - Methanol (6.4) 4.35 8.7
4 - Ethanol (9.0) 6.12 12.24
5 - LPG (15.5) 10.54 21.08
6 - CNG (17.2) 11.7 23.39
7 - E85 (9.76) 6.64 13.27
Exhaust Gas Temp 1 0 - Celsius 0 1023
1 - Fahrenheit 32 1873
Fluid Temp 2 0 - Celsius Water 0 150
1 - Fahrenheit Water 32 302
2 - Celsius Oil 0 150
3 - Fahrenheit Oil 32 302
Vacuum 3 0 - Vac in/Hg 29.93 0
1 - Vac mm/Hg 760 0
Boost 4 2 - Boost 0-30 PSI 0 30
3 - Boost 0-2 kg/cm2 0 2.07
4 - Boost 0-15 PSI 0 15
5 - Boost 0-1 kg/cm2 0 1.12
Air Intake Temp 5 0 - Celsius 0 150
1 - Fahrenheit 32 302
RPM 6 0 - 8k 0 8000
1 - 12k 0 12000
2 - 20k 0 20000
Speed 7 0 - MPH 0 160
1 - km/H 0 258
Throttle Position 8 0 - Percent 0 100
Engine Load 9 0 - Percent 0 100
Sensor Address Units Min Max
Fluid Pressure 10 0 - PSI Fuel 0 120
1 - kg/cm2 Fuel 0 8.44
2 - Bar Fuel 0 8.27
3 - PSI Oil 0 120
4 - kg/cm2 Oil 0 8.44
5 - Bar Oil 0 8.27
Timing 11 0 - Degree -64 64
Manifold Absolute 12 0 - kPa 0 255
Pressure (MAP) 1 - inHg 0 75.3
Mass Air Flow (MAF) 13 0 - g/s 0 655.35
1 - lb/min 0 86.69
Short Term Fuel Trim 14 0 - Percent -100 100
Long Term Fuel Trim 15 0 - Percent -100 100
Narrowband O2 16 0 - Percent 0 100
1 - Volts 0 1.275
Fuel Level 17 0 - Percent 0 100
Volt Meter 18 0 - Volts 0 20
Knock 19 0 - Volts 0 5
Duty Cycle 20 0 - Positive 0 100
1 - Negative 0 100
Fuel Efficiency 21 0 - MPG 0 100
1 - KM/L 0.43 42.51
2 - L=100KM
Analog Voltage 22 0 - Volts 0 5
Speed (Hertz) 23 0 - Hz 0 10,230