# Migrating from V4 to V6 V6 adds CAN FD while retaining classic CAN and RS485. USB classic-CAN frames are mostly unchanged, but SPI layouts, wrapped RS485 frames, and communication settings must be updated. ## Identify Required Changes | Host method | Change required | Notes | | --- | --- | --- | | USB serial to classic CAN | Usually no | V4 and V6 both use `ST/ET` frames | | Linux SocketCAN classic CAN | Check mapping | V47 and current V6 releases support it; verify `canX` to physical-interface mapping again | | Linux SocketCAN CAN FD | Yes | Only V6 supports CAN FD; add arbitration and data-phase settings | | USB serial to RS485 | Yes | Normal V6 mode uses `RT + Channel + Len + Data + CRLF` | | SPI to CAN / RS485 | Yes | The V6 23-byte SHORT layout differs from V4 | | SPI to CAN FD | Yes | Switch to LONG and always transfer 73 bytes | | USB serial bitrate used to configure the external bus | Yes | V6 uses separate saved AT-command settings | ## USB Classic CAN V4 and V6 use the same transmit formats: ```text Extended: ET + Channel + ExtID(4B) + Len + Data + 0D 0A Standard: ST + Channel + 00 00 + StdID(2B) + Len + Data + 0D 0A ``` V6 replies use local Channel `1/2`, not whole-board `3/4`. ## USB RS485 V4 places device data first and Channel and length at the end. V6 normal mode uses: ```text 52 54 Channel Len Data... 0D 0A ``` This is `RT + Channel + Len + Data + CRLF`, and replies use the same layout. To run an unwrapped RS485 program, temporarily enable raw passthrough: ```text AT+RS485RAWCH=1 AT+RS485RAW=1 ``` Raw replies do not include Channel. `RAWCH` is saved, but `RAW` is disabled again after a power cycle. ## SPI Protocol Although both versions can use 23-byte transfers, V4 and V6 use different padding and trailer layouts. Do not reuse a V4 frame unchanged. | Mode | SPI transfer | Purpose | | --- | ---: | --- | | `SHORT` | 23 bytes | Classic CAN and up to 18 bytes of RS485 data | | `LONG` | 73 bytes | Classic CAN, CAN FD, and up to 68 bytes of RS485 data | The last byte in V6 is CRC-8 over the first 22 or 72 bytes. CAN and RS485 messages use the `ST/ET/SF/EF/RT` headers and no longer use the V4 tail-length layout. See the individual SPI protocol pages. Before using CAN FD, send over USB serial: ```text AT+SPIMODE=LONG ``` After success, change every SPI transfer from 23 to 73 bytes. ## Communication Settings V6 does not change external bus settings based on the bitrate selected in a USB serial application. Send explicit commands: ```text AT+SETFDCAN=1000000,5000000 AT+SETRS485=4000000,1,0,8 ``` These settings are saved across power cycles. SocketCAN remains configured by Linux `ip link` and must be reapplied after reconnecting. ## Recommended Migration Sequence 1. Program the V6 release that matches the board platform, then confirm both MCU devices return that selected version through `AT+VER`. 2. Query and configure CAN/CAN FD, RS485, and SPI settings. 3. Validate all four CAN and all four RS485 channels through USB or SocketCAN first. 4. Update the SPI fixed length, layout, and CRC, then test SPI. 5. Finally restore periodic control, batch tasks, and power-on execution. Do not perform a full-chip erase during a V6 update. Keep device identity, authorization, communication settings, and batch-task areas intact.