Also here's an update on my project.
This all started because I purchased a metric cluster for our 2012 Odyssey, and the cluster was showing an error for the blind spot indication (BSI) system, which our van does not have. I discovered that the BSI system is on the low speed 125 kbps B-CAN fbus.
In the interest of science, I purchased the BSI module for our van off eBay. I figured out the pinout from the shop manual, connected the pins for power, ground, BCAN H/L, and the mirror indicators, and I powered it up.
I knew it was working because on boot the LED's for the mirrors lit up. Using my USB2CAN, I ran CANDUMP and saw the following 29-bit messages:
(1501182476.597224) can0 1610FF9F#
(1501182476.601778) can0 12F8AC9F#09
(1501182476.901628) can0 12F8AC9F#09
(1501182477.201563) can0 12F8AC9F#09
(1501182477.501585) can0 12F8AC9F#09
(1501182479.601400) can0 12F8AC9F#09
(1501182479.621410) can0 12F8AC9F#08
(1501182479.921487) can0 12F8AC9F#08
(1501182480.101490) can0 12F8AC9F#11
(1501182480.401726) can0 12F8AC9F#11
(1501182480.591237) can0 1610FF9F#
(1501182480.701417) can0 12F8AC9F#11
(1501182481.001430) can0 12F8AC9F#11
(1501182481.301328) can0 12F8AC9F#11
I haven't figured out what 1610FF9F# means, but I did discover that 12F8AC9F#08 indicates everything is OK, 12F8AC9F#09 turns on just the BSI warning light to indicate self test (while starting the car), and 12F8AC9F#11 indicates a fault.
Armed with this information, I created a carloop transmit script that send the "BSI is OK" 12F8AC9F#08 message every 20 milliseconds. The message is sent to the bus via the B-CAN lines under the passenger seat, and I am powering the Photon via USB on switched power so I don't have to worry about battery drain. Voila, no more BSI errors!
void loop() {
// Send a message at a regular time interval
unsigned long now = millis();
if (now - lastTransmitTime > transmitInterval) {
CANMessage message;
// A CAN message has an ID that identifies the content inside
message.id = 0x12F8AC9F;
message.extended = true;
// It can have from 0 to 8 data bytes
message.len = 1;
// Pass the data to be transmitted in the data array
message.data[0] = 0x08;
// Send the message on the bus!
carloop.can().transmit(message);
lastTransmitTime = now;
}
}