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.10for AP mode, or your assigned local IP. The Data Port is typically35000.
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(where22is the Mode, and28 13is 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:
Approach A: Using the Web UI (Recommended)
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.
- Navigate to the Automate tab in the WiCAN Pro Web UI.
- Go to the Vehicle Groups sub-tab and click + Create New Vehicle Group.
- Enter your Initialization String (if required by the specific ECU module you are querying).
- Click + Add PID Card and enter your discovered PID request (e.g.,
222813). - In the Extraction Field, enter your calculated math expression (e.g.,
B4*2). - Once you have built your PIDs and tested them, scroll up to the Active Vehicle Profile section.
- 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.
- Open a text editor (like VS Code or Notepad++).
- Structure your JSON to include the vehicle model, initialization string, and your custom PIDs.
- Ensure your
pid,pid_init, andexpressionfields 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.
Navigate to Vehicle Settings
- 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.