E46M3 DIYでCSLスタイルカーボンエアボックスに交換する場合に考慮が必要なこと2

前回のコンテンツで、ターナーのCSLスタイル カーボンエアボックスに交換した時に出た3500rpm以下のフルスロットル領域のガクガク(以降、ジャーキングと呼びます。)は、オープンループマップのみを調整すれば概ね解消できることに触れました。
しかし日常で乗っているとアクセルのパーシャル(中間)領域のジャーキングが気になる上に、2000〜3000rpmピンポイントで発生するトルクの詰まり感も気になりました。
今回のコンテンツでは、パーシャル領域のジャーキング対処と詰まり感の原因、細くなった3500rpm以下のトルク改善案について触れています。
また先日、カーボニアスのCSLスタイルカーボンエアボックスを装着した車両のDME書き換えを行いました。この機会を頂けたおかげでターナーとの違いを体感できたので、これについても触れています。
※後日分かったトルク改善の抜本的な解決方法は、以下のコンテンツに記載しています。

※この記事を理解する上で、XDFで定義されたタグ(パラメータ)の意味を把握しておくと読みやすくなります。
そのためのビューアを公開しました。XDF・Funktionsrahmen(BMW純正の機能記述書)・Ghidraの逆アセンブル結果の3つを突き合わせて、パラメータを起点に「これを変えると何に効くか」「これは何から決まるか」を辿れるものです。0401のパラメータ2,529件が対象で、日本語表示に対応しています。
このビューアの土台になっている0401バイナリの逆アセンブル解析は、karter16さんの CSL_0401_Binary_Disassembly_Notes によるものです。XDF(CSL_0401_Karter16_v3.6)もkarter16さんが作成・公開されているものです。ビューアはそのリポジトリをフォークして作りました。karter16さんの長年の解析がなければ、この記事の訂正もできていません。
パーシャル領域のジャーキング対処
フラップ用の燃料噴射補正マップを修正することで概ね対処できました。
CSLにはメインの燃料制御となるAlpha-N(正しくは"VE"マップです。)と呼ばれるマップが、補正用も含めて全部で4つあります。
パーシャル領域のジャーキングは、フラップ全開による補正用Alpha-N(VE)マップテーブルの燃料噴射量係数を0にする事で大幅に改善することができました。
訂正(2026/8)— この「正しくはVEマップです」という訂正が、そもそも間違っていました
0401バイナリの逆アセンブル解析の結果、入力軸で見れば "Alpha-N" という呼び方の方が正確でした。 ベースマップ
kf_rf_soll(XDF アドレス 0xD2FE)の縦軸はaq_rel_rf= スロットルの相対開口面積で、アイドルバルブ開口面積 + KL_AQ_ABS_WDK(スロットル角)をK_AQ_ABS_MAX(11918mm²)で正規化した値です。温度も圧力も入りません。一方、このマップの出力(z値)が RF =相対充填量なので、これを「容積効率」と呼ぶのは妥当です。 つまり 入力=Alpha(開口面積)/出力=VE相当 で、どちらか一方だけが正しい名前ではありません。 当時の僕は「出力の名前」を「方式の名前」と取り違えていました。
なお「補正用も含めて全部で4つ」も誤りで、
rf_soll(充填量目標)を作る系統は 3つです (kf_rf_soll0xD2FE /kf_rf_soll_kath0xD718 /kf_rf_soll_ask0xDB32。 いずれも master バンク・引数は(N, aq_rel_rf)で揃っています)。 4つ目に挙げたKF_RF_N_AQ_RELは別物です(下記)。
- 緊急用マップ(KF_RF_N_AQ_REL)= Alpha-N → 0401では加速増量(DKBA)に使われています
- ベースマップ(CSL_AlphaN_1_Main)=
kf_rf_soll@0xD2FE 触媒保護マップ→ 触媒暖機マップ(CSL_AlphaN_2_KatHeating)=kf_rf_soll_kath@0xD718- フラップ補正マップ(CSL_AlphaN_3_FlapAdder)=
kf_rf_soll_ask@0xDB32
追記(2026/8)—
KF_RF_N_AQ_RELは 0401 では役割が違いましたここで「緊急用マップ」と書いたのは、標準M3ではこれがエアフロ故障時のリンプホーム用マップ だという理解からで、その対比のつもりでした。標準M3側については手元に非CSLのバイナリが 無いので確認できていません(このシリーズで参照している解析は 0401 のみが対象です)。
分かったのは 0401 側での役割です。このマップは 加速増量(DKBA=Nachspritzer/追加噴射)の参照テーブルとして使われていました。 XDF 上も Function タグが
DKBA、カテゴリがInjection - After Spray [DKBA]になっています。RF_DELTA = KF_RF_N_AQ_REL(N, AQ_REL) − KF_RF_N_AQ_REL(N, AQ_REL_OLD) DKBA_TI = RF_TI_CONST × RF_DELTA / 1000 × 水温補正 × KF_DKBA_SOFT/HARD_RF_N(RF, N)今と前回の開度で同じマップを2回引いて、その差分だけを使います。 なお 0401 のセンサ故障時の代替充填量は
kf_rf_soll自身が作っているので、 少なくとも 0401 では「別に緊急用マップが1枚ある」という構図ではないようです。
KF_RF_N_AQ_REL:XDF 0x1F98 / file 0x89F98 / slave、y=AQ_REL 12点 × x=回転数 18点kf_rf_soll:XDF 0xD2FE / master、y=aq_rel_rf24点。そもそも軸が別物です (aq_rel_rfは AQ_REL にkl_aq_rel_rf_fakt(N)の回転数スケーリングを掛けたもの)
VEチューニングでこのマップも調整すべきか(※ここから先は推論です)
理屈のうえでは 調整の対象になります。ただし効き方が独特なので、注意点を書いておきます。
1. 効くのは「傾き」だけで、絶対値ではありません。 差分しか使わないので、マップ全体を上下に平行移動しても追加噴射量は1ミリも変わりません。 意味があるのは開度方向の勾配(dRF/dAQ_REL)だけです。
2. だから、カーボンエアボックスで実際の充填量が下がっていれば、ここも外れています。 このテーブルも「この開度ならこれだけ入るはず」という純正前提の値なので、 実際の充填量が想定より少なければ
RF_DELTAが過大に出ます。 つまり踏み込んだ瞬間の追加噴射が濃すぎる方向にずれます。3.
KF_DKBA_SOFT/HARDをゼロにしたのは、これを潰していた可能性があります。 あのマップは上の式の最後に掛かるゲインなので、ゼロにすれば追加噴射ごと消えます。 ジャーキングが減ったのは筋が通りますが、壁面付着ぶんの補償まで丸ごと失っています。 本来はKF_RF_N_AQ_RELの勾配を直すほうが外科的です。4. VEマップの補正係数をそのまま流用してはいけません。 軸が
AQ_RELとaq_rel_rfで別物ですし、こちらは低開度側の刻みがかなり粗い (0 / 0.1 / 0.4 / 1.2 / 3.0 / 5.0 / 10 / 20 / 30 / 40 / 60 / 85%)ので、 VE側の細かい補正はそのまま乗りません。※ここは解析ノートに記載が無く(
KF_RF_N_AQ_RELに触れた文書が1つもありません)、AQ_REL_OLDをいつ更新しているかもコードから復元できていません。 実際にどれだけ効くかはログで確かめる必要があります。僕もまだ試していません。
訂正(2026/8):「触媒保護」は誤りで、正しくは「触媒暖機(Kat-Heizung / cat heating)」です。
AVAN1_SOLL_FAKTORによってベースマップとブレンドされる 冷間用のマップでした。


参考 | Alpha-Nとは、スロットル開度×エンジン回転数に対する燃料噴射量係数のマップです。標準のM3及びこの年代のBMWは、計算された負荷×エンジン回転数に対する燃料噴射量係数のマップが通常運転用(オープンループ)のベースマップで、Alpha-Nマップはエアフロが壊れた時の緊急用マップとして存在しています。この定義ファイルは、有志で作成されていることもあり、Alpha-NとVEに誤解があり作成されています。
訂正(2026/8):これは僕の誤解でした。現在コミュニティで公開されている
CSL_0401_Karter16_v3.6は、同じマップについて「通称 CSL Alpha-N マップであり、 0401 の主たる容積効率テーブル」と両方を明記した上で、y軸がaq_rel_rf(AQ_REL の変形)であることまで書いています。つまり定義ファイル側の記述は 「入力=Alpha-N、出力=VE相当」というコードの実態と一致していて、 誤解していたのは僕の方でした。定義ファイルを更新することをおすすめします。
さらに、加速する時の燃料増量補正マップも調整することで、ジャーキングをより抑えることができました。ソフトな加速とハードな加速それぞれのマップがありますので、これも0にします。
- KF_DKBA_SOFT_RF_N
- KF_DKBA_HARD_RF_N

これらの対処は、本来もっと多いはずの吸気量に対して燃料を減らす調整なのでトルクは失われてしまいます。トルクを取り戻すには、吸気量を増やすハード面での改善が必要です。
2000〜3000rpmの詰まり感の正体
これまでの調整でジャーキングは減らせました。しかし、これによって2000〜3000rpmの詰まり感が顕著に感じられるようになりました。
特にこれを感じるのが、上り坂でアクセルを踏み込んでいる時のシフトアップ直後です。
明らかに何かしら制御で押さえつけられてる感じがします。
しかもこの詰まり感は、CSLスタイル カーボンエアボックスに交換する前から出ていた症状かもしれません。
ジャーキング対処をしたことで、この問題がより顕著になったようです。
マップをくまなく眺めているとそれらしきものがありました。
- KF_AR_NGRAD1
- KF_AR_MD

この高い数字を下げると詰まり感はなくなりましたが、ジャーキングが発生しました。
このマップはジャーキングを抑える制御マップだったようです。
KF_AR_NGRAD1マップで、容積効率(縦軸)と現在のエンジン回転数から一秒間あたりのエンジン回転数=エンジン回転上昇スピードが判定されます。
判定の結果、回転数上昇スピード(rpm/s)が高すぎたら(このマップでいうと5000rpm/s)KF_AR_MDのマップに従って、トルクを制限します。(2500rpmで5000rpm/sなら-100N・mトルクを下げる)トルクの制限方法はおそらく点火タイミングを遅角(リタード)させていると思われます。
確かに2500rpmを越えるとスイッチが切れたかのように加速が戻ります。
この制御はCSL標準で備わっています。メーカーでも解決できなかった事象でしょうから、これを解決するのは骨が折れるはずです。
これに関しては正体が分かったことで一旦納得としました。
訂正(2026/8)— この節でいちばん大事な訂正です。アンチジャーク制御は 0401 では動いていません
逆アセンブル解析の結果、このアンチジャーク(Antiruckelfunktion / ARF)は 0401 では出力線が切られていました。
ar_anti_jerkingという関数の最終行が、そのままMD_AR = 0 [K_AR_ENABLE == 0]です。 そしてK_AR_ENABLE(XDF 0x105F、slave バンク)の値は 0 でした。- さらに第二の安全弁として
K_AR_TMOT_MIN= 130℃ という水温ゲートが残っています。 S54 の水温がここまで上がることはありません。- 出力である
MD_ARを読みにいく関数が、復元されたコードのどこにも存在しません。検出器も状態機械もマップ引きも動いてはいるので、マップに立派な値が入っているのに、 出力だけがゼロという状態です。ですから
KF_AR_*をどう書き換えても車には何も起きません。 2000〜3000rpmの詰まり感の正体は、少なくともアンチジャークではありませんでした。 真犯人は現時点で特定できていません。別の候補も見てはいますが、 コードで裏を取れていないのでここでは名前を出さないでおきます。また「CSL標準で備わっている」も不正確でした。アンチジャークは CSL 固有ではなく MSS54 ファミリー共通の標準機能で、工場の Funktionsrahmen にも独立した機能記述書があります。 そのうえで CSL 0401 では二重に無効化されている、というのが実態です。
なお、マップの読み取り自体は当たっていました。
KF_AR_NGRAD1の軸も、 「2500rpm で 5000rpm/s なら -100N・m」という読みも、値としては正しいです (ただし縦軸は「容積効率」ではなく rf =相対充填量。またこのマップは判定するのではなく しきい値そのものを返すテーブルで、5000rpm/s が入っているのは rf=0.7 行の3セルだけ。 これは「絶対にトリガさせない」ための帯域外無効化で、実際に効く値は 900〜2000rpm/s です)。
では、なぜ「下げたら詰まり感が消えた」のか(※これは推定です)
無効な機能を編集して体感が変わったのは、確かに辻褄が合いません。 ひとつ有力な説明が、解析ノートに記録されていたバンク衝突です。
KF_AR_MD(slave の XDF アドレス 0x112A)とKF_MD_MIN_BRENN(master の 0x912A)は、 どちらもファイル上の同じ位置 0x8912A に落ちます。 TunerPro でバンクを取り違えると、片方を編集したつもりでもう片方が黙って書き換わります。KF_MD_MIN_BRENNは最低燃焼トルクの床で、こちらは生きています。つまり僕は
KF_AR_MDを触ったつもりで、実際には最低燃焼トルクを動かしていた—— という可能性があります。断定はできませんが、心当たりのある方はバンクの選択を 確認してみてください。これは他のマップを編集するときにも起こりうる罠です。
セッティングを詰める為に調整するおすすめのマップ
2000〜3000rpmの詰まりは一旦置いておくとして、吸気が少ないなりに直線的な加速感になるよう調整したくなります。
ですが、たくさん調整できるマップがあって、どれを調整して良いか探そうとすると気が遠くなります。これにめげず色々と実験を繰り返した結果、1つのマップだけいじれば、ある程度は調整できるマップを発見しました。それはエンジンの最大トルクを制限するマップです。
- ENGINE TORQUE- MAXIMUM(KL_MD_MAX_VL_RF_SU1 )

調整は、CSL純正マップを基準に値を下げていくだけです。
上げると、負荷をかけた時にジャーキングが出てしまいます。(空燃比もどんどん濃くなります。)
下げるとジャーキングは出にくく、空燃比も落ち着き加速フィーリングがスムーズになります。
このマップは文字通りエンジントルクを制限するマップなので、回転数によってはもっとトルクを出せるのですが、”前後との繋がり(気持ちよさ)”を優先してあえてトルクを制限する、いわば味付けをするようなマップです。
訂正(2026/8):「文字通り」ではありませんでした。
KL_MD_MAX_VL_RF_SU1(XDF 0x8BFA)が 保持しているのはトルク(N・m)そのものではなく、全開時に到達する相対充填量 rf (0.67〜1.33、無単位。名前の RF もこれです)です。 これが N・m に変わるのは次段のKF_MD_MAX_MD_IND_OPT(x軸=rf、z=N・m)を通した後で、 「値を下げる → rf 軸の引き位置が下がる → 最大トルクが下がる」という二段構えで効きます。 上限トルクを決めるマップだという役割の理解はそのままで正しいので、 「文字通り」の一語だけ取り消しておきます。

当初は、Alpha-N(VE)マップを調整していたのですが複雑すぎて沼にハマり、いつまで経っても収束しませんでした。
そんな時、NA M3 Forumsの書き込みで優れたチューナーはベースマップをいじっていないというのを見てこの方法を見つけるに至りました。(でも最終的にはこれを弄って良くなりました。常識が覆った瞬間?笑)
前回のコンテンツで、調整するマップはオープンループ(アクセル全開燃料噴射)マップだけと言いましたが、パーシャル領域を調整するならこのトルク制御マップも調整する必要があります。

しかし、アクセル全開マップ以上のトルクはどう頑張っても出ませんから、そこの限界点を調整したのち、最後の味付けとしてトルク制御マップを調整するアプローチがスマートだと思っています。
カーボニアスのシュノーケルノズルは低回転域に効く?
今回オーダーを頂いてDMEを書き換えた車両は、カーボニアスのシュノーケルノズルが装着された車両でした。

僕の車でセッティングしたデータを書き込んで試運転してみたら、低回転域のトルクの細さを感じません。
こんなアリクイみたいな不格好な部品でこんなにも違うのか!?とビックリしてしまいました。
ただ、この車両と僕の車との違いはシュノーケル以外にも多くありました。
- MTであること
- MAP センサーがついてないこと
- グリルのエアスクープにGruppeMがついていること
- サクラムマフラーに交換していること
MTだとSMGのように余計なトルク制御が入らないはずです。
MAPセンサーがないと燃料噴射量はIAT(温度)センサーでのみ決定される為複雑な動きが減るのかもしれません。
訂正(2026/8):MAPセンサーが無くても、噴射量の主決定要因はベースマップ
kf_rf_soll(スロットル開口面積×回転数)のままでした。MAPが無くて失われるのはrf_p_saug_iという積分補正だけで、その権限はk_rf_p_saug_i_min/max(0xE5EE / 0xE5F0)で ±2.5 %RF に固定されています。IAT(吸気温)が充填量に効くのは
RF_PT_KORR = KL_RF_TAN_KORR(TAN) × KL_RF_P_UMG_KORR(P_UMG)の1か所だけで、KL_RF_TAN_KORR(0xD2AC)は −40〜100℃ の全域を通しても 1.130 → 0.951、つまり ±13% 幅の乗数にすぎません(20℃→60℃ なら約2%)。 しかも同じ式に入る大気圧側KL_RF_P_UMG_KORR(0xD2CE、599→1100mbar で 0.617→1.141)の方が 権限は大きいです。「IATでのみ決定される」は成り立ちませんでした。
エアスクープがついていると、吸気温度を下げられ吸気量も増えトルクアップに貢献しているかもしれません。
マフラーが変わっていると、吸排気のバランスが取れて吸気が増えたのかもしれません。
なのでターナーで出る低回転域トルク不足が、カーボニアスのシュノーケルだけで解決できるとは一概に言えません。
低回転域のトルクをカバーするインテークパーツ候補
低回転域に限って言えば、圧倒的に吸気量が少ないターナーのカーボンエアボックス。
これを補うには何かしらの追加吸気パーツが必要です。
色々と探した結果、これかな?と思ったものを掲載します。
フレキシブルダクト
その第一候補がフレキシブルダクトです。2,000円程度で買えます。
まだ試行錯誤中なのですが、ただダクトを配置すればいいというわけではなさそうです。
径と長さとダクトの配置で、吸気特性が大きく変わりそうです。
※試した結果、ハズレでした。

フロントグリルエアガイド
直接的な吸気量確保というよりは吸気温度を下げてエンジンに入る空気密度を上げ、エンジンに入る酸素濃度を上げる役割かもしれません。
AliExpressでコピー品が4000円程度で買えますね。笑
※これも試してハズレでした。

引用:AliExpressより
※画像の向き間違えてますね。
PSDesignsヘッドライトダクト
走行風をダイレクトに押し込むのに最も効果が高そうなパーツです。でもこれそのままだと車検通りませんよね?めっちゃ魅力的ですけどノーマルルックが崩れてしまうので非常に悩ましいです..
※まだ試していません。こいつは可能性感じますね。

引用:PSDesignsより
今後はインテークパーツの組み合わせとVANOSセッティング(するかどうか含め)を試行錯誤
費用を抑えてどこまで楽しんで行けるかが僕の取り組みの軸です。
サクッとカーボニアスに行きたくなる気持ちもありますが、頭と時間を使ってああじゃない、こうじゃないと試行錯誤する面白さを感じていきたいです。
(貧乏人の言い訳みたいに聞こえなくもないですが。)
こうやって愛車を自分で維持できる知識が身に付く充実感は何者にも代え難いです。
でもやはり僕だけでは限界があるので、いろんな方から少しづつ知識を集めてそれをまとめ、全員にとって価値ある1つの情報に集約できたらいいなと考えています。
※それを実現したいと思っているのが開発中のTSUNAGIプラットフォームです。
関連投稿




