Decoding PIDs with FORScan & Wireshark

This guide provides detailed instructions for reverse-engineering proprietary PIDs for Ford cars and trucks using FORScan and Wireshark. It will also guide you through creating the JSON car configuration file and verifying it using the WiCAN Pro Test Button.


Phase 1: Setup & Connection

WiCAN Pro Configuration

  • Ensure the WiCAN Pro is plugged into the vehicle and powered on.
  • Connect your PC to the WiCAN Pro's WiFi (AP Mode) or the same local network (Station Mode).
  • Note the IP Address: The default is usually 192.168.0.10 for AP mode, or your assigned local IP. The Data Port is typically 35000.

FORScan Setup

  • Open FORScan on your PC.
  • Go to Settings (Gear Icon) and then Connection.
  • Connection Type: Select WiFi.
  • Adapter: Select "ELM327 compatible".
  • IP Address: Enter the WiCAN Pro's IP (e.g., 192.168.0.10).
  • Port: Enter 35000.

Wireshark Setup

  • Open Wireshark.
  • Select the WiFi adapter connecting you to the WiCAN Pro.
  • Apply Filter: In the top bar, type the appropriate filter to hide background noise.

Phase 2: Isolating & Capturing the PID

Isolate the PID

  • Go to the Dashboard (Gauges icon) in FORScan.
  • Click the Settings/Gear icon inside the Dashboard.
  • Delete ALL existing PIDs from the list.
  • Add ONLY the one PID you want to engineer (e.g., "Fuel Rail Pressure" or "Tire Pressure").

Capture the Data

  • Click Play (Start Streaming) in FORScan.
  • Wait for a valid value to appear (e.g., 65 PSI). Note this value mentally.
  • Click Stop in FORScan.
  • Click Stop in Wireshark immediately.

Phase 3: Analysis (Finding the Hex)

Inspect the Stream

  • In Wireshark, right-click any of the last few packets (colored green/blue/black).
  • Select Follow > TCP Stream.
  • A window will pop up showing the ASCII communication.
  • Look for the command FORScan sent. It is usually a Mode 22 request for Ford.
  • Example: 22 28 13 (where 22 is the Mode, and 28 13 is the PID address).

Extract and Map Bytes

  • Cleaned Response: 62 28 13 04 BE. This represents the aligned data structure we standardized.
  • Byte Mapping breakdown:
    • B0: PCI Length (e.g., 05).
    • B1: Service Byte (62).
    • B2: PID High (28).
    • B3: PID Low (13).
    • B4: Data High (04). This is where your data usually starts.
    • B5: Data Low (BE).
  • Calculate the Formula: You can use an LLM like Gemini to help you calculate the formula that converts the hex data back into your noted value.

Phase 4: Creating the Configuration Profile

Once you have isolated your PID request, initialization string, and calculated the math expression, you must load it into the WiCAN Pro. There are two approaches to building your profile:

Instead of writing JSON code manually and risking syntax errors, you can use the WiCAN Pro's built-in Automate engine to build and export your profile.

  1. Navigate to the Automate tab in the WiCAN Pro Web UI.
  2. Go to the Vehicle Groups sub-tab and click + Create New Vehicle Group.
  3. Enter your Initialization String (if required by the specific ECU module you are querying).
  4. Click + Add PID Card and enter your discovered PID request (e.g., 222813).
  5. In the Extraction Field, enter your calculated math expression (e.g., B4*2).
  6. Once you have built your PIDs and tested them, scroll up to the Active Vehicle Profile section.
  7. Click the Save Profile button. The WiCAN Pro will automatically compile your groups into a perfectly formatted JSON file and download it to your computer.

Approach B: Writing the JSON by Hand

If you prefer to edit files directly, you can construct a car_data.json file manually using the data obtained in the previous phases.

  1. Open a text editor (like VS Code or Notepad++).
  2. Structure your JSON to include the vehicle model, initialization string, and your custom PIDs.
  3. Ensure your pid, pid_init, and expression fields exactly match the data you reverse-engineered.

Phase 5: Using the "Test Button" to Verify

Upload the JSON

  • Go to the WiCAN Pro Web UI -> Automate, and under the Vehicle Specific Tab, select Choose File.
  • Upload car_data.json.
  • At Vehicle Model, select your car name (this comes from the name in your JSON file).
  • Reboot the WiCAN Pro by going to Automate -> Submit Changes.
  • Go to Automate -> Vehicle Specific.
  • You should see your new PID (e.g., "Tire_Press_FL") listed.

Run the Test

  • Pre-requisite: Ensure the car key is ON.
  • Click the Test button next to your PID.
  • Analyze the Result: The value should match your FORScan value (e.g., 65.7).

Troubleshooting with the Test Button

  • Value is huge (e.g., 20,000+): Your index is too low. You are reading the PID bytes (28 13). Change your expression to use the higher bytes (e.g., B6 / B7).
  • Value is tiny/zero: Your index is too high. Change the expression to use lower bytes like B2 / B3.
  • "No Data" / "Error": The WiCAN isn't receiving a response. Check your pid_init (Protocol/Header settings).

Final Verification

  • Once the Test Button shows the correct value, you can be 100% confident the MQTT data will also be correct, now that the firmware logic is unified.